0

我在用着

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

显示我的风险对象的所有可编辑值。当这被发布到我的承担风险的控制器时,它看起来像这样:

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

Risk 已创建(这很神奇),但所有字符串值为 null,即使 Enum 值已正确填充。我还有效地通过表单字段名称匹配传入另一个值,没有问题。

任何人都知道从哪里开始看这个,因为它大部分是基于约定的?

4

1 回答 1

0

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

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

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

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

于 2012-05-08T14:00:53.947 回答