我正在使用
@(Html.EditorFor(m => m.Risk))
显示我的Risk对象的所有可编辑值。当这个发布到我的控制器时,它接受一个Risk,如下所示:
[HttpPost]
public ActionResult Add(Risk formRisk, string programId)
风险已创建(这只是神奇的),但所有字符串值都为空,即使正确填充了枚举值。我也有效地通过表单字段名称匹配传递了另一个值,没有问题。
任何人都有任何关于从哪里开始研究这个问题的线索,因为其中有很多是基于惯例的?
答案 0 :(得分:0)
原来我的视图模型与我发布表单作为参数的方法类型不同。显然,这是推断出来的,可能是错误的,但似乎MVC 3在处理提交的表单时会做一些有趣的基于反射的魔术。假设我有一个这样的方法:
[HttpPost]
public ActionResult ProcessForm(Book book)
{
string title = book.Title;
//code for stuff
}
如果我发布到此操作的表单有一个名为“Title”的字段,则该表单元素的值将自动设置为参数上名为“Title”的任何属性。我不知道发生了这种情况,但它非常酷,我现在正在使用EditorFor正确地利用它。 =]感谢11位感兴趣的人。
这篇文章为我赢得了风滚草徽章,因为它太无趣了。 =]