Próbuję wykluczyć wymaganą właściwość (hasło), aby ta opcja modelu nie potwierdzała tej właściwości, ale z jakiegoś powodu nadal jest sprawdzana, nawet gdy próbuję ją wykluczyć.ModelState.IsValid nie wyklucza wymaganej właściwości
Kontroler:
[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);
}
Widok:
...
<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>
użytkownika (przy użyciu dataannotation):
[Required]
public string Password { get; set; }
Im przy użyciu VS2008, MVC2, firefox
Może jestem po prostu zmęczony i mogę' t to zobacz. Każda pomoc jest mile widziana
Ja też mam z tym problemy. Wydaje się hackish wykonać wykonać ModelState.Remove, gdy oczywiście powinno być wykluczone. Czy ktoś może wyjaśnić dokładnie, dlaczego walidacja MC3 ignoruje Bind (Exclude =)? – automagic
@ James: Zgadzam się, wydaje mi się to trochę sprzeczne z intuicją, że TryUpdateModel wyklucza właściwości wymienione w excludeProperty, ale IsValid nie wyklucza tych wymienionych w Bind (Exclude) (lub w excludeProperty). –
Myślę, że znalazłem odpowiedź: http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html –