EditorFor将空值传递给我的控制器

时间:2012-04-26 15:00:43

标签: asp.net-mvc razor

我正在使用

@(Html.EditorFor(m => m.Risk)) 

显示我的Risk对象的所有可编辑值。当这个发布到我的控制器时,它接受一个Risk,如下所示:

[HttpPost]
public ActionResult Add(Risk formRisk, string programId)

风险已创建(这只是神奇的),但所有字符串值都为空,即使正确填充了枚举值。我也有效地通过表单字段名称匹配传递了另一个值,没有问题。

任何人都有任何关于从哪里开始研究这个问题的线索,因为其中有很多是基于惯例的?

1 个答案:

答案 0 :(得分:0)

原来我的视图模型与我发布表单作为参数的方法类型不同。显然,这是推断出来的,可能是错误的,但似乎MVC 3在处理提交的表单时会做一些有趣的基于反射的魔术。假设我有一个这样的方法:

[HttpPost]
public ActionResult ProcessForm(Book book)
{
    string title = book.Title;
    //code for stuff
}

如果我发布到此操作的表单有一个名为“Title”的字段,则该表单元素的值将自动设置为参数上名为“Title”的任何属性。我不知道发生了这种情况,但它非常酷,我现在正在使用EditorFor正确地利用它。 =]感谢11位感兴趣的人。

这篇文章为我赢得了风滚草徽章,因为它太无趣了。 =]