3

どこでエラーを探すべきか本当にわかりません... 状況: フォームといくつかの入力を含む ASPX ビューがあり、送信ボタンをクリックすると、すべてが ASP の 1 つに POST されます。 NET MVC アクション。

そこにブレークポイントを設定すると、正しくヒットします。FireBug を使用してアクションに送信される内容を確認すると、data1=abc&data2=something&data3=1234 が正しく表示されます。

しかし、私のアクションメソッドには何も届いていません。ViewData は空です。ViewData["data1"] など、データが到着したことを示すものはありません。

どうすればいいの?どこからエラーを探し始めることができますか?

4

4 に答える 4

8

ViewData は、コントローラーからビューに移動するときに関連します。ポストバックしません。

次のようなアクションメソッドが必要です

public ActionResult DoSomething(string data1, string data2, int data3) { ...

次に、(モデル? パラメータ?) バインディングが処理を行います。

于 2010-05-28T19:08:03.417 に答える
1

FormCollection を受け入れるように Action を変更してみてください。

public ActionResult DoSomething(FormCollection fc)
{
     System.Diagnostics.Debug.Writeline(fc["data1"]);
}
于 2010-05-28T19:09:10.633 に答える
0

ビューに投稿されたものを確認したい場合は、FormCollection をパラメーターとして受け入れるか、フォーム要素をモデルに直接バインドします。そのようです:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult PostToThisView(FormCollection formItems)
{
    var data1 = formItems["data1"];
    return View();
}

また、この質問を参照してください

于 2010-05-28T19:10:15.760 に答える
0

これを試して:

Request["data1"]

また

Request.Form["data1"]

また

[HttpPost]
public ActionResult YourPostAction(object data1)

また

[HttpPost]
public ActionResult YourPostAction(ACLassThatHasData1Prop viewmodel)
//your view doesn't has to be strongly typed to the type of the parameter in this case
于 2010-05-28T19:14:01.533 に答える