Sto tentando di escludere una proprietà richiesta (password) in modo che lo stato del modello non convalidi quella proprietà, ma per qualche motivo continua a essere valida anche quando provo a escluderla.ModelState.IsValid non esclude la proprietà richiesta
Controller:
[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>
Utente (con dataannotation):
[Required]
public string Password { get; set; }
Im utilizzando VS2008, MVC2, firefox
Forse im solo stanco e può' lo vedo Ogni aiuto è apprezzato
Anche io sto lottando con questo. Sembra logico eseguire ModelState.Remove, quando ovviamente dovrebbe essere escluso. Qualcuno può spiegare esattamente perché la validazione MC3 ignora Bind (Escludi =)? – automagic
@James: Sono d'accordo, sembra piuttosto controintuitivo che TryUpdateModel escluda le proprietà elencate in excludeProperty, ma IsValid non esclude quelle elencate in Bind (Exclude) (o in excludeProperty). –
Penso di aver trovato la risposta: http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html –