2010-05-28 120 views
2

我真的不知道在哪里寻找错误...情况:我有一个ASPX视图,其中包含一个窗体和一些输入,当我点击提交按钮一切都POST'ed到我的ASP.NET MVC行动之一。ASP.NET MVC 2 - 查看数据后POST空

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

然而,没有什么是在我的行动方法到达。 ViewData是空的,没有ViewData [“data1”]或任何可以显示数据到达的东西。

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

+0

WRT数据1 = ABC&数据2 = ...什么呢ŧ他的方法签名为你的动作方法看起来像? – 2010-05-28 19:09:04

+0

没有参数。 ViewData [“data1”]应该能够访问该值。但它是空的,即使FireBug显示该值已提交。 – Alex 2010-05-28 19:10:35

+0

你期待在ViewData中找到什么回发?它用于控制器向视图发送数据,反之亦然。查看'Request [“data1”]',或者在控制器操作的参数中更好。 – 2010-05-28 19:10:39

回答

8

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

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

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

然后(模型参数?)结合应该照顾你的东西

+0

...的确如此:-) – 2010-05-28 19:15:54

1

尝试修改你的行动接受的FormCollection:

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

如果你想看到什么是张贴到您的视图,接受的FormCollection作为参数,或直接绑定你的表单元素的模型。像这样:

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

另外,see this question

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 
+0

关于最后一个示例,用于该参数的模型不必与强制类型为请求来源的视图的模型相同。模型联编程序将简单地获取存储在表单集合中的值(或者如果请求是GET,则返回查询字符串),并尝试使用它们填充指定为参数的任何类型的对象。 – 2010-05-28 20:36:18

+0

@Dr。 Wily的学徒,thnx告诉我这一点 – Omu 2010-05-29 08:19:07