2011-12-23 10 views
5

Estoy validando unos 10 archivos de entrada en un formulario. Los ValidationMessageFor-etiquetas deben estar en la parte superior de la página, así que estoy escribiendo cada uno como:MVC3 - ¿Cómo insertar un ValidationMessageFor con un salto de línea <br /> al final?

@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME) 
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY) 

y así sucesivamente. Mis modelos se parecen a esto:

[Required(ErrorMessage = Constants.ErrorMsgNameMissing)] 
public string NAME { get; set; } 
[Required(ErrorMessage = Constants.ErrorMsgCityMissing)] 
public string CITY { get; set; } 

Las constantes son cadenas. Ahora, si se muestra más de un ValidationMessageFor, todos están en una línea. ¿Cómo puedo insertar un salto de línea como <br /> al final de cada mensaje?

Ésta no es la manera correcta:

@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME)<br /> 
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY)<br /> 

ya que el <br /> se muestra incluso si no hay ningún error ...;)

Gracias de antemano.

PD: Mostrarlos como una lista también sería genial.

+0

alguna razón en particular por qué '@ Html.ValidationSummary()' no será suficiente? –

+0

No ... maldita sea. Eso fue muy fácil: p Escríbelo en una respuesta y lo aceptaré ... oh hombre. ¡Gracias! – Sleepwalker

+0

Hecho. ¡Buena suerte! –

Respuesta

3

Creo que lo que en realidad estás buscando es:

@Html.ValidationSummary() 
1

Me gustaría ir con @ Html.ValidationSummary() si es posible

1

Salida Custom ValidationSummary template Asp.net MVC 3. Creo que sería mejor para su situación si tuviera control total sobre cómo se realiza la validación. Puede escribir fácilmente un método de extensión para ValidationMessageFor.

1

En realidad, en la parte superior debe ser:

@Html.ValidationSummary(/*...*/) 

Las validaciones de campo deben estar con sus respectivos campos.

Sin embargo, si insiste absolutamente en poner @Html.ValidationMessageFor(/*...*/) en la parte superior y luego ajustar su comportamiento de diseño en su CSS y olvidarse del <br /> 's

1

no estoy seguro si hay una construida en la forma, pero se puede hacer fácilmente otro método de extensión:

public static MvcHtmlString ValidationMessageLineFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) { 
    return helper.ValidationMessageFor(expression) + "<br />"; 
} 

¿Algo así?

Cuestiones relacionadas