web-dev-qa-db-ja.com

ASP.NET MVC 3 Razor:ビューからコントローラーにデータを渡す

.NETはまったく新しいものです。 HTMLフォームを備えた非常に基本的なWebページがあります。 'onsubmit'でフォームデータをビューからコントローラーに送信します。私はこれに似た投稿を見たことがありますが、新しいRazor構文を含む回答はありません。 'onsubmit'で何をしますか、そしてどのようにコントローラーからデータにアクセスしますか?ありがとう!!

10
Kyle M

Html.Beginformで渡すビューコントロールをラップできます。

例えば:

@using (Html.BeginForm("ActionMethodName","ControllerName"))
{
 ... your input, labels, textboxes and other html controls go here

 <input class="button" id="submit" type="submit" value="Submit" />

}

[送信]ボタンが押されると、Beginform内のすべてが "ControllerName"コントローラの "ActionMethodName"メソッドに送信されます。

コントローラ側では、次のようにビューから受信したすべてのデータにアクセスできます。

public ActionResult ActionMethodName(FormCollection collection)
{
 string userName = collection.Get("username-input");

}

上記のコレクションオブジェクトには、フォームから送信したすべての入力エントリが含まれます。配列にアクセスするのと同じように、名前でアクセスできます:collection ["blah"]またはcollection.Get( "blah")

FormCollectionを使用してページ全体を送信せずに、パラメーターをコントローラーに直接渡すこともできます。

@using (Html.BeginForm("ActionMethodName","ControllerName",new {id = param1, name = param2}))
{
 ... your input, labels, textboxes and other html controls go here

 <input class="button" id="submit" type="submit" value="Submit" />

}

public ActionResult ActionMethodName(string id,string name)
{
 string myId = id;
 string myName = name;

}

または、これらのメソッドの両方を組み合わせて、Formcollectionと共に特定のパラメーターを渡すことができます。それはあなた次第です。

それが役に立てば幸い。

編集:私が書いている間に、他のユーザーがいくつかの役立つリンクを紹介しました。見てください。

26
InspiredBy

次の方法でフォームを定義します。

@using (Html.BeginForm("ControllerMethod", "ControllerName", FormMethod.Post))

コントローラー「ControllerName」のメソッド「ControllerMethod」を呼び出します。このメソッドでは、モデルまたは他のデータ型を入力として受け入れることができます。フォームとかみそりmvcの使用例については、 this チュートリアルを参照してください。

0
Justin