0

我有一个像这样的对象

public class ParentEntityInfo
{
    public long? ParentId { get; set; }
    public string EntityName { get; set; }
    public string ParentProperty { get; set; }
}

这个对象的视图是:

<%=Html.Hidden("parentInfo.ParentId", parentInfo.ParentId)%>
<%=Html.Hidden("parentInfo.ParentProperty", parentInfo.ParentProperty)%>
<%=Html.Hidden("parentInfo.EntityName", parentInfo.EntityName)%>

我有 parentInfo 为空的情况,我将此表单发布到控制器。关于控制器动作

 public ActionResult SomeAction(..., ParentEntityInfo parentInfo)

我收到构造对象 parentInfo 但所有属性均为空。在这种情况下,我宁愿让整个 parentInfo 为空。我有没有可能告诉默认模型绑定器不传递这样的对象?或者也许我可以修改此代码中的某些内容以使其以这种方式工作。我认为在 mvc 2.0 中它是这样工作的。

4

2 回答 2

0

Use the HiddenFor(...) helper instead.

于 2010-12-17T22:09:39.597 回答
0

我认为默认模型绑定器将始终使用 Activator.CreateInstance 来绑定复杂的操作参数。您可以做的是使用 ModelState.IsValid 来评估参数是否绑定成功。我认为在您的情况下,默认情况下这将是错误的,但如果不是,您可以添加必要的属性来确保这种行为,例如

public class ParentEntityInfo
{
    [Required(ErrorMessage = "Parent required")]
    public long? ParentId { get; set; }
    public string EntityName { get; set; }
    public string ParentProperty { get; set; }
}
于 2011-02-15T16:00:41.380 回答