J'utilise actuellement ASP.NET MVC3 RC et j'utilise les validations discrètes JQuery décrites par Brad Wilson au his blog. Cela fonctionne très bien mais quand j'envoie mon formulaire (en Ajax) au serveur, je fais quelques validations côté serveur et retourne la même ligne (qui est incluse dans une vue partielle) si mon état de modèle n'est pas valide. 2 problèmes avec cela:La validation du client PartialView et discrète ne fonctionne pas
1er: Lorsque je fais un return PartialView
dans mon action, tous les attributs discrets ne sont pas rendus. J'ai trouvé une façon "non élégante" de le faire mais quand je le fais, les validations des clients sont cassées. Après que je reviens de mon action, même si j'appelle jQuery.validator.unobtrusive.parse()
sur ma ligne mise à jour, $("form").valid()
retourne toujours vrai même si ce n'est pas le cas.
2ème: Je veux que ma vue rendue soit rendue en tant que chaîne sur le serveur afin que je puisse la renvoyer dans un JsonResult (ex: myJSonResult.html=RenderPartialToString("partialName",model)
).
a une référence, il y a mon avis (editInvitation):
<td>
<%= Html.HiddenFor(x=>x.ID,new{id="ID"}) %>
<%= Html.HiddenFor(x=>x.GroupID,new{id="GroupID"}) %>
<%: Html.TextBoxFor(x => x.Name, new { id = "Name" })%><%:Html.ValidationMessageFor(x=>x.Name) %>
</td>
<td>
<%: Html.TextBoxFor(x => x.Email, new { id = "Email" })%> <%:Html.ValidationMessageFor(x=>x.Email) %>
</td>
<td>
<%: Model.Status.ToFriendlyName()%>
</td>
<td>
<%= InvitationsViewModel.RenderActions(Model, Html, InvitationsViewModel.CreateRowID(Model.ID))%>
</td>
Et mon action de contrôleur:
if (TryUpdateModel(invitation))
{
validModel = true;
//Other stuff
}
if (Request.IsAjaxRequest())
{
//TODO : I return a partial view but I would prefer to return a JSonResult with the rendered view as a string in an Property of my JSon result
return PartialView(validModel ? "DisplayInvitation" : "EditInvitation", invitation);
}
Merci