我試圖排除一個必需的屬性(密碼),所以模型狀態不驗證該屬性,但由於某種原因,即使我試圖排除它仍然驗證。ModelState.IsValid不排除必需的屬性
控制器:
[Authorize, AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Edit(int id, [Bind(Exclude = "Password")]FormCollection collection)
{
var user = Proxy.GetUser(id);
TryUpdateModel(user, null, null, new[]{"Password"});
if(!ModelState.IsValid)
return PartialView(user);
Proxy.UpdateUser(user);
}
查看:
...
<tr>
<td class="label">
<label class="row_description" for="Password"><%= S._("Password")%></label>
</td>
<td>
<%= Html.Password("Password", null, new { @class = "row_input" })%>
<%= Html.ValidationMessage("Password", "*")%>
</td>
</tr>
用戶(使用dataannotation):使用VS2008
[Required]
public string Password { get; set; }
IM,MVC2,火狐
也許我只是累了並且可以'沒有看到它。任何幫助表示讚賞
我也在爲此而苦苦掙扎。執行ModelState.Remove時,顯然應該被排除,這似乎很棘手。任何人都可以解釋爲什麼MC3 validaton忽略綁定(排除=)? – automagic 2011-05-13 17:13:35
@James:我同意,TryUpdateModel排除了excludeProperty中列出的屬性,但IsValid並不排除在Bind(排除)(或excludeProperty)中列出的屬性。 – 2011-05-14 09:14:25
我想我找到了答案:http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html – 2011-05-15 06:24:54