2011-11-15 15 views
6

Ho il seguente modello di vista.convalida del modello di visualizzazione che ignora gli spazi iniziali e finali

public UserViewModel { 
... 
[Email(@"^[email protected][^\.].*\.[a-z]{2,}$", false, ErrorMessage="...")] 
public string EmailAddress{ get; set; } 
... 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Visitor(UserViewModel userViewModel) 
... 

Tuttavia ho trovato che a volte un utente copia e paste di un e-mail nella vista da un altro e-mail, ecc documento di parola e, a volte si prende uno spazio iniziale e/o finali. Poiché gli utenti non sono i più intelligenti e gli spazi non vengono visualizzati nel controllo di input, in realtà dovrei ignorarli e andare avanti.

Quindi, se il mio stato il modello non è valido, mi chiedo il miglior approccio per risolvere questo-

  1. Aggiungere gli spazi per la mia espressione di convalida.
  2. Nel metodo del risultato dell'azione, controllare se tagliare l'e-mail e rimuovere manualmente l'errore dallo stato del modello.
  3. Fare qualcosa di diverso ...

io non sono sicuro al 100% circa l'1, 2 e non troppo essere onesti!

risposta

3

Non vorrei davvero aggiungere spazi all'espressione di convalida.

Date un'occhiata a questa risposta: ASP.NET MVC: Best way to trim strings after data entry. Should I create a custom model binder?

+0

Idealmente lo voglio solo sulla proprietà "email" non su ogni proprietà, tuttavia ho detto che ho bisogno di pensarci! – Rippo

+0

Più ci penso, più sono convinto che questa sia la soluzione migliore. Non ho un posto nel mio sito web che mi imponga di mantenere spazi iniziali/finali .... – Rippo

2

è possibile modificare le setter per avere il codice di assetto sulla impostando il valore della proprietà troppo.

+0

Semplice e facile! Anche a me piace! –

+0

Io no. Viola [POLS] (http://en.wikipedia.org/wiki/Principle_of_least_astonishment), perché metti una cosa dentro e ne fai uscire un'altra. –

Problemi correlati