我有一个带有典型 create 方法的控制器(一个用于GET,一个用于POST)。 POST采用强类型参数:
[HttpPost] public ActionResult Create(Quiz entity)
然而,当进行回调时,我的实体的属性为null ...如果我像这样重新定义它:
[HttpPost] public ActionResult Create(Quiz entity, FormCollection form)
我可以看到价值在那里,例如form["Component"]
包含"1"
。我过去没有遇到这个问题,我无法弄清楚为什么这个课程会有所不同。
任何想法?
答案 0 :(得分:3)
在回发中让默认模型绑定器为您实例化Quiz
的最简单方法是在视图中使用Html表单助手。因此,例如,如果您的Quiz
类看起来像这样:
public class Quiz
{
public int Id { get; set; }
public string Name { get; set; }
}
视图中的以下代码可确保回发时显示值:
@Html.HiddenFor(mod => mod.Id)
@Html.TextBoxFor(mod => mod.Name)
请注意,需要回传但未在视图中显示的值(如标识符)需要使用Html.HiddenFor
添加到视图中。
Here's a more comprehensive list Html格式帮助函数。
答案 1 :(得分:1)
我想出来了!
所以,在我的模型中(参见下面对@ ataddeini的帖子的评论)你可以看到我有一个Component ...来表示我使用了几个列表框的组件,第二个(Components)依赖于第一个的内容(产品)。在生成我使用的第二个列表
@Html.DropDownListFor(x => x.Component, ...)
(如上面的链接之一所示)生成一个名为“Component”的表单字段......其中存在问题。我需要做的是将它绑定到组件的Id而不是!
@Html.DropDowListFor(x => x.Component.Id, ...)
乌拉!