Domanda

Dove dovrebbe risiedere la convalida quando si utilizza ViewModels con MVC (MVVM), del modello o il ViewModel? (O entrambi o nessuno)? E perché? Io portare questo soprattutto alla luce delle V2 di ASP.NET MVC in uscita a breve.

Che dire di convalida complessa / custom?

È stato utile?

Soluzione

Qualsiasi convalida specifica attività dovrebbe essere nel Modello. Qualsiasi convalida specifico sito web potrebbe essere fatto sia nel modello e / o ViewModel. In questo modo la logica di business (modelli) può muoversi dietro una diversa interfaccia (Windows, Web Form, ecc) e il vostro convalida rimarrà intatto.

Altri suggerimenti

Direi che è spesso necessaria per validare a tutti i livelli:)

Stavo pensando per un po 'di seguire:

  1. validazione dell'input utente: sicuramente sul controller, non su qualsiasi tipo di modello. Esempio:. Captcha
  2. Relativo alla Visualizzare i dati validati sul ViewModel (non nel ViewModel, ma sul ViewModel). Esempi:. Conferma password , Obbligatorio Email
  3. convalida Le regole di business va decisamente nella validazione del modello. Esempi:. Obbligatorio Email , Buoni sconto dovrebbe essere valido
  4. Potenzialmente Casi d'Uso (storia, scenario ecc) convalida. Essa non convalida gli attributi, ma convalida la correttezza di tutto il processo. Dovrebbe andare a modello di validazione (o meglio in uno strato separato). Esempio: A soli 3 articoli sono disponibili gratuitamente nel corso di una settimana se nessun ordine è stato mettere per il periodo specificato .

Nota: Ho incluso il Email Richiesto in entrambi 2 e 3 in quanto dipende spesso dove essa appartiene
. Se l'e-mail ha un ruolo solo informativo - allora la convalida può essere rilassato e spingerlo al-modello di vista. Se e-mail è un forte requisito per l'applicazione - è sicuramente la validazione dei modelli.

Il 4 ° cosa ha in realtà nulla a che fare con la convalida come noi lo intendiamo.
Ma dovrebbe anche essere applicato. Così il suo risultato dovrebbe essere visualizzato all'utente.

In pratica tutti i 4 tipi di validazione possono utilizzare la stessa infrastruttura. Ma l'attuazione dipende:) ...

Saluti,
Dmitriy.

Modello. Il tuo convalida dovrebbe essere nel vostro livello di business. Il tuo modello di vista dovrebbe essere solo per ottenere la configurazione vista.

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