Im tratando de excluir una propiedad requerida (Contraseña) para que el modelo no valide esa propiedad, pero por alguna razón todavía valida aunque trate de excluirla.ModelState.IsValid no excluye la propiedad requerida
controlador:
[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);
}
Vista:
...
<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>
Usuario (utilizando dataannotation):
[Required]
public string Password { get; set; }
Im usando VS2008, MVC2, Firefox
Quizá Im cansado y puede' t verlo Cualquier ayuda se agradece
También estoy luchando con esto. Parece una hazaña realizar ModelState.Remove, cuando obviamente debería ser excluido. ¿Alguien puede explicar exactamente por qué MC3 validaton ignora Bind (Exclude =)? – automagic
@James: estoy de acuerdo, parece contradictorio que TryUpdateModel excluya las propiedades enumeradas en excludeProperty, pero IsValid no excluye las enumeradas en Bind (Exclude) (o en excludeProperty). –
Creo que encontré la respuesta: http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html –