ASP.NET MVC 2 - POST后的ViewData为空

时间:2010-05-28 19:06:24

标签: c# asp.net-mvc asp.net-mvc-2 controller viewdata

我真的不知道在哪里寻找错误......情况:我有一个ASPX视图,其中包含一个表单和一些输入,当我单击提交按钮时,所有内容都被POST到其中一个我的ASP.NET MVC操作。

当我在那里设置断点时,它被正确击中。当我使用FireBug查看发送到操作的内容时,我正确地看到data1 = abc& data2 = something& data3 = 1234。

然而,我的行动方法没有任何结果。 ViewData为空,没有ViewData [“data1”]或其他任何可以显示数据到达的内容。

这怎么可能?我在哪里可以开始寻找错误?

4 个答案:

答案 0 :(得分:8)

从控制器进入视图时,ViewData是相关的。它不会回发。

你需要你的行动方法看起来像

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

然后(模型?参数?)绑定应该为你处理事情

答案 1 :(得分:1)

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

public ActionResult DoSomething(FormCollection fc)
{
     System.Diagnostics.Debug.Writeline(fc["data1"]);
}

答案 2 :(得分:0)

如果要查看发布到View的内容,请接受FormCollection作为参数,或将表单元素直接绑定到模型。像这样:

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

另外,see this question

答案 3 :(得分: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