Attualmente sto utilizzando ASP.NET MVC3 RC e sto utilizzando le convalide JQuery non invadenti come descritto da Brad Wilson su his blog. Funziona alla perfezione ma quando invio il mio modulo (in Ajax) al server, eseguo alcune convalide sul lato server e restituisco la stessa riga (inclusa in una vista parziale) se lo stato del mio modello non è valido. 2 problemi con questo:PartialView e la convalida del client non invadente non funziona
1: Quando eseguo il return PartialView
nella mia azione, tutti gli attributi non invadenti non vengono visualizzati. Ho trovato un modo "non elegante" per farlo, ma quando lo faccio, le convalide dei client sono interrotte. Dopo che torno dalla mia azione, anche se chiamo jQuery.validator.unobtrusive.parse()
sulla mia riga aggiornata, $("form").valid()
restituiscono sempre true anche se non è il caso.
2nd: Voglio che la mia vista renderizzata sia renderizzata come una stringa sul server, così posso inviarla di nuovo in un JsonResult (es: myJSonResult.html=RenderPartialToString("partialName",model)
).
ha un riferimento, c'è mio punto di vista (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>
E la mia azione di controllo:
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);
}
Grazie