ASP.NET MVC 2 - ViewData empty after POST

爷,独闯天下 提交于 2020-01-04 01:25:11

问题


I don't really know where to look for an error... the situation: I have an ASPX view which contains a form and a few input's, and when I click the submit button everything is POST'ed to one of my ASP.NET MVC actions.

When I set a breakpoint there, it is hit correctly. When I use FireBug to see what is sent to the action, I correctly see data1=abc&data2=something&data3=1234.

However, nothing is arriving in my action method. ViewData is empty, there is no ViewData["data1"] or anything else that would show that data arrived.

How can this be? Where can I start looking for the error?


回答1:


ViewData is relevant when going from the controller to the view. It won't post back.

you'll need your action method to look something like

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

Then the (model? parameter?) binding should take care of things for you




回答2:


Try modifying your Action to accept FormCollection:

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



回答3:


If you want to see what is posted to your View, accept FormCollection as a parameter, or bind your form elements directly to a model. Like so:

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

Also, see this question.




回答4:


try this:

Request["data1"]

or

Request.Form["data1"]

or

[HttpPost]
public ActionResult YourPostAction(object data1)

or

[HttpPost]
public ActionResult YourPostAction(ACLassThatHasData1Prop viewmodel)
//your view doesn't has to be strongly typed to the type of the parameter in this case


来源:https://stackoverflow.com/questions/2931805/asp-net-mvc-2-viewdata-empty-after-post

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!