c'è un sacco di post molto buona e le spiegazioni su come implementare la convalida con ASP.NET MVC, e preferisco uno di questi:
Tuttavia, mi piace molto chiamare ActionMethods tramite il metodo jquery $ .ajax. Uno dei motivi per cui voglio usare $ .ajax è perché ci saranno molte viste parziali caricate nella pagina dinamicamente (anche il modulo per la creazione di entità) tramite chiamate $ .ajax e non posso semplicemente restituire la vista - Perderò tutto il contenuto caricato in modo dinamico.
Per avere una visione migliore del problema, inserirò del codice semplice per spiegare come mi piacerebbe chiamare le azioni del controllore e gestire le risposte nel codice jquery del client.
I controller ActionMethod:
public ActionResult CreateCustomer(string name, string accountNumber)
{
try
{
CustomerService.InsertCustomer(name, accountNumber);
return Json(new ActionInfo()
{
Success = true,
Message = "Customer Is Successfully Created"
});
}
catch (Exception ex)
{
return Json(new ActionInfo()
{
Success = false,
Message = ex.Message
});
}
}
di chiamata e la gestione in codice client:
$.ajax({
type: "POST",
url: $form.attr('action'),// /MyController/CreateCustomer
data: $form.serialize(),
error: HandleUnespectedError,
dataType: "json",
success: function(response) {
if (response.Success)
alert("Success: " + response.Message);
else
alert("Error: " + response.Message);
}});
C'è un buon modo per fare alcuni di questi quadri di validazione per lavorare nel modo che ho bisogno? So che posso aggiungere errori di validazione in ActionInfo, e quindi gestirlo nel client, ma credo che sarebbe già una costruzione della mia convalida.
Hey thedude! Grazie mille per lo sforzo :) Sono completamente d'accordo con te per l'entità Cliente per l'associazione (volevo fare così, non so perché ho messo il metodo con parametri semplici) e per la gestione delle eccezioni di sicuro. Con xVal posso facilmente implementare la validazione del client, e se qualcuno lo eviterà lo prenderò in azione. Ma come potrei presentare i messaggi di convalida accanto ai campi in quel caso? –
Per questo, si desidera restituire una vista parziale anziché JSON dall'azione del controller. Nella vista parziale, si utilizzerà il metodo helper Html.ValidationMessage() per visualizzare un messaggio di errore per ciascun campo. I messaggi di errore a livello di campo generati dagli attributi delle annotazioni dei dati sono disponibili per il controllore tramite la proprietà 'ModelState'. Ad esempio, per ottenere il primo messaggio di errore per un campo chiamato name, lo si otterrà tramite 'ModelState [" Nome "]. Errori [0] .ErrorMessage'. Inoltre, dai un'occhiata al metodo 'Ajax.BeginForm'. L'ho usato con grande successo in passato. –
Questo è quello che ho capito, o restituirò la vista parziale di JSON, e questa è la cosa che non mi piace ... Comunque, vedrò come gestirlo usando MS con caratteristiche Ajax, sebbene il mio desiderio era quello di evitarlo :) Grazie –