2009-04-07 12 views
13

Estoy notando un problema extraño al usar ModelState.AddModelError para validar la entrada en mis formularios. El resultado de Html.ValidationMessage no es el verdadero valor de HTML sino su valor codificado, por lo que el estilo de CSS no se aplica al mensaje de error.ModelState.AddModelError encode HTML

Ejemplo:

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />"; 
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required")); 

Se muestra el resultado que:

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span> 

Esto no solía ser el caso con su beta anterior de y no estoy seguro de qué postura tomar aquí.

Gracias Nick

Respuesta

12

Hay otra forma de hacerlo, también, sin tener que crear su propia extensión.

Digamos por ejemplo tenemos la siguiente en uno de nuestros controladores:

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>"); 

A continuación, puede hacer lo siguiente en nuestra opinión:

@if(Html.ValidationMessageFor(x => x.Name) != null){ 
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString()) 
} 

La evitará que el mensaje de error de '<b>Please Use a Valid Person Name</b>' de siendo codificado

+1

No sé si esto funcionó al mismo tiempo, pero puedo confirmar que no lo hace en MVC 3. –

+13

@ Html.Raw (HttpUtility.HtmlDecode (Html.ValidationMessageFor (x => x.Name) .ToHtmlString())); – George

1

Crear su propio método de extensión que imita Html.VallidationMessage ...?

Tuve que hacer algo similar porque el material de validación MVC incorporado (ModelState, ValidationMessage, etc.) no admite páginas que tienen más de un formulario en una página.

+0

tiene razón, había actualizado el artículo incorrecto. Ambos estaban relacionados con la codificación del html, simplemente había actualizado el html. He eliminado la actualización. Gracias por notarlo. – IEnumerator

Cuestiones relacionadas