回发值丢失了!

时间:2011-05-12 00:18:46

标签: asp.net-mvc asp.net-mvc-3 post controller strong-typing

我有一个带有典型 create 方法的控制器(一个用于GET,一个用于POST)。 POST采用强类型参数:

[HttpPost] public ActionResult Create(Quiz entity)

然而,当进行回调时,我的实体的属性为null ...如果我像这样重新定义它:

[HttpPost] public ActionResult Create(Quiz entity, FormCollection form)

我可以看到价值在那里,例如form["Component"]包含"1"。我过去没有遇到这个问题,我无法弄清楚为什么这个课程会有所不同。

任何想法?

2 个答案:

答案 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, ...)

乌拉!