2010-10-15 10 views
10

me gustaría cambiar las htmlAttributes del código dictada por mi Html.ValidationMessageFor, pero quiero que el mensaje que se muestra a ser el "default".MVC2 Html.ValidationMessageFor: añadir htmlAttributes pero mantener el mensaje predeterminado

Las opciones de sobrecarga son:
A) Html.ValidationMessageFor(expression)
B) Html.ValidationMessageFor(expression, validationMessage)
C) Html.ValidationMessageFor(expression, validationMessage, htmlAttributesObject)

Me gustaría que hubiera una opción Html.ValidationMessageFor(expression, htmlAttributesObject), pero no la hay.

¿Cómo puedo lograr el resultado deseado con la opción C? Es decir, ¿dónde se almacenan los mensajes "predeterminados"? ¿Existe una manera limpia y fácil de hacerlo, así que puedo conectarlo al parámetro validationMessage?

Gracias

Respuesta

19

Puesto que usted no desea reemplazar el mensaje predeterminado, simplemente suministran una cadena vacía y MVC utilizarán el mensaje predeterminado:

<%: Html.ValidationMessageFor(m => m.propertyName, string.Empty, new { attribs ... }) %> 
+0

perfecto. Gracias. Supongo que asumí que pasar una cadena vacía representaría (o no, por así decirlo) una cadena vacía para el mensaje. ¿El hecho de que las cadenas vacías no sean parámetros no anulará un valor predeterminado de algún helper ASP.NET o una convención .NET más general? ¿O es esa variable de comportamiento caso por caso? –

+0

Ni tampoco realmente. Descubrí esta funcionalidad al mirar el código fuente. Vale la pena mirar cuando tienes la oportunidad. Se ha hecho de esta manera porque no podría haber un método separado simplemente tomando los dos parámetros que originalmente querías usar, sin que la firma del método chocara con (expression, validationMessage). – Clicktricity

+0

¿cómo paso el HTMLAttribute (3er parámetro) para indicarle que muestre esta validación en una nueva línea o debajo del campo que está validando? – VoodooChild

Cuestiones relacionadas