`[绑定(排除=“密码”)]`不工作?

时间:2011-05-19 05:35:51

标签: asp.net-mvc-2

我正在尝试编辑用户页面,但我不想验证密码字段。所以我在我的模型前加了一个[Bind(Exclude =“Password”)]。但它仍然导致modelstate.Isvalid返回false。任何人都可以知道为什么会这样吗?

public ActionResult Edit([Bind(Exclude="Password")]User user, string selectedStatus, string password, string confirmPassword)
        {
if(ModelState.Isvalid)<---- returns false
{
///logic
}
}

1 个答案:

答案 0 :(得分:0)

此属性排除绑定属性,但不会对其进行验证。所以基本上模型绑定器永远不会为它赋值,但如果你有一个需要值的验证属性,它将无法工作。

显然,对此的解决方案是使用视图模型(顺便提一下,这是我在与ASP.NET MVC相关的SO上回答的大约70%的问题的解决方案)。

因此,如果您根本不想要密码字段,请不要将其包含在此视图模型中,如果您想要密码但又不想进行验证,请不要使用Required进行装饰属性。

所以而不是:

public ActionResult Edit([Bind(Exclude="Password")]User user, string selectedStatus, string password, string confirmPassword)

使用:

public ActionResult Edit(EditUserViewModel user)