Domanda

Ho giocato in giro con il ASP.NET Framework MVC e l'unica cosa che davvero confondere me è come ho intenzione di fare lato server convalida dell'inviato i dati del modulo.Ho la presunzione di non inviare lo stesso URL, ma se non lo faccio, come faccio a visualizzare nuovamente il modulo con i dati inseriti e messaggi di errore?Inoltre, dove la logica di convalida andare?Nel modello o il controller?Questo sembra essere uno dei pochi settori in cui i moduli web sono molto più forti (mi mancano i controlli di convalida).

È stato utile?

Soluzione

Si potrebbe desiderare di dare un'occhiata a ScottGu ultimo post per ASP.Net prev 5.Passeggiate attraverso un campione di validazione che è molto interessante:

http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx

Altri suggerimenti

Ecco una panoramica del flusso in MVC:

  1. /nuove - rendere il vostro "Nuovo" vista contenente un form per l'utente di compilare
    • Utente compila il modulo e inviato a /creare
    • Il post è indirizzato a Creare azione sul controller
    • Nel tuo metodo di azione, aggiornare il modello con i dati che è stato pubblicato.
    • Il Modello dovrebbe convalidare stesso.
    • Il Controller dovrebbe leggere se il modello è valido.
    • Se il Modello è valido, salvarlo nel db.Rinvio a /spettacolo per eseguire il rendering di Vista dell'oggetto.
    • Se il Modello non è valido, salvare il modulo di valori e di messaggi di errore in TempData, e reindirizzare la Nuova azione di nuovo.Compila i campi modulo con i dati TempData e mostra il messaggio di errore(s).

I quadri di convalida vi aiuterà in questo processo.Inoltre, penso che il ASP.NET MVC team di progettazione di un framework di validazione per la prossima anteprima.

Per quanto posso dire a tutti sta ancora cercando di capire la "standard" modo di farlo.Detto questo sicuramente check out Phil Haack e Scott Guthrie ultimi post su MVC e troverete alcune interessanti informazioni su come hanno fatto.Quando stavo solo giocando intorno con esso per me, ho creato un ModelBinder per il LinqToSql classe di dati che mi aveva generato.È possibile controllare questo post per scoprire come mettere insieme una base ModelBinder:

ASP.Net Raccoglitore Modello MVC

Le azioni se è stato creato un "Prodotto" ModelBinder sarebbe sufficiente dichiarare l'azione in questo modo:

public ActionResult Nuovo(Prodotto prod)

E il raccoglitore di modello avrà cura di assegnare inviato i dati per gli oggetti di proprietà, come è stato costruito a destra in ogni caso.

Dopo che all'interno della vostra GetValue() metodo che è possibile implementare qualsiasi convalida che si desidera, se l'utilizzo dell'eccezione, regex, o quello che può fare una chiamata come:

(ModelStateDictionary_name).AddModelError("form_element_id", "entered_value", "error_message");

Quindi si può solo buttare un <%= Html.ValidationSummary() %> in vista per visualizzare tutti i tuoi errori.

Per la validazione lato client ho appena usato jQuery.Dopo aver ottenuto un campione di base impostare se si può iniziare a fare alcune cose interessanti, combinando il tutto con Parziale Vista e le chiamate Ajax.

Hai dato un'occhiata a questo?http://www.codeplex.com/MvcValidatorToolkit

Citato da la pagina

Il Validatore Toolkit fornisce una serie di validatori per il nuovo ASP.NET MVC quadro per convalidare i moduli HTML il lato client e lato server utilizzando validation set.

Ho paura che qualcuno di più MVC-esperto di me per parlare di dove l'architettura si dovrebbe mettere le cose.

Sto imparando l'MVC framework, quindi non sono sicuro di come disattivare questo si, ma da quello che ho capito si avrebbe la forma di una Vista come la Modifica.aspx.Questa forma sarebbe poi postare il controller per un altro metodo di azione, ad esempio Update() passando il contenuto del modulo che hai impostato nella Modifica.aspx come parametri.

Update(int id, string name, string foo)

Si potrebbe fare la convalida all'interno di quel metodo.Se tutto è ok

return View("Item", yourObject)

C'è Castello.I componenti.Validatore modulo di Castello di progetto.E ' molto agile e potente.Genera regole di validazione sulla base di attributi (o qualsiasi altra fonte) e anche in grado di generare JS di convalida utilizzando jQuery, Prototype Convalida, fValidate e altri.Naturalmente è saggio abstract validatore di distanza dietro IValidationEngine interfaccia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top