我正在尝试编辑用户页面,但我不想验证密码字段。所以我在我的模型前加了一个[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
}
}
答案 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)