2011-11-15 23 views
6

Tengo el siguiente modelo de vista.ver la validación del modelo que ignora los espacios iniciales y finales

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

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

Sin embargo, he encontrado que a veces un usuario copia y pega un correo electrónico en la vista desde otro correo electrónico, procesador de texto, etc y, a veces se recoge un espacio inicial y/o final. Como los usuarios no son los más inteligentes y los espacios no se muestran en el control de entrada, entonces realmente debería ignorarlos y continuar.

Así que si mi estado modelo no es válido, me pregunto el mejor enfoque para resolver esto:

  1. añadir espacios a mi expresión de validación.
  2. En el método de resultado de la acción, compruebe si recorta el correo electrónico y elimina manualmente el error del modelo.
  3. Hacer otra cosa ...

no estoy 100% seguro de 1, 2, ni para ser sincero!

Respuesta

3

Realmente no agregaría espacios a su expresión de validación.

Tenga una mirada en esta respuesta: ASP.NET MVC: Best way to trim strings after data entry. Should I create a custom model binder?

+0

Lo ideal es que solo lo desee en la propiedad de "correo electrónico", no en todas las propiedades, sin embargo, ¡tengo que pensar en esto! – Rippo

+0

Cuanto más pienso en esto, más convencido pienso que este es el mejor calce. No tengo un lugar en mi sitio web que me obligue a mantener espacios iniciales/finales ... – Rippo

2

puede cambiar los emisores de tener el código de ajuste a establecer el valor de la propiedad también.

+0

¡Simple y fácil! ¡También me gusta eso! –

+0

Yo no. Viola [POLS] (http://en.wikipedia.org/wiki/Principle_of_least_astonishment), porque pones una cosa y sacas otra. –

Cuestiones relacionadas