Asp.net mvc 2 `[Bind(Exclude=";Password";)]`不工作?

Asp.net mvc 2 `[Bind(Exclude=";Password";)]`不工作?,asp.net-mvc-2,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(M

我试图编辑一个用户页面,但我不想验证密码字段。所以我在我的模型前面放了一个[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
}
}
public ActionResult编辑([Bind(Exclude=“Password”)]用户、字符串selectedStatus、字符串Password、字符串confirmPassword)
{

if(ModelState.Isvalid)此属性将属性从绑定中排除,但不会从验证中排除。因此,基本上,模型绑定器不会为其指定值,但如果您在其上具有需要值的验证属性,则它将不起作用

显然,解决这个问题的方法是使用一个视图模型(顺便说一句,它解决了我所回答的与ASP.NET MVC相关的70%的问题)

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

因此,不是:

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

可能重复的
public ActionResult Edit(EditUserViewModel user)