3

我真的不知道在哪里寻找错误...情况:我有一个 ASPX 视图,其中包含一个表单和一些输入,当我单击提交按钮时,所有内容都被发布到我的一个 ASP 中。 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) { ...

然后 (model?parameter?) 绑定应该为你处理好事情

于 2010-05-28T19:08:03.417 回答
1

尝试修改您的操作以接受 FormCollection:

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 回答