2011-11-23 50 views
5

Estoy usando DropDownList en MVC Razor, y estoy teniendo problemas con la codificación HTML automática. Mi código es el siguiente:Cómo usar Html.Raw en MVC Razor DropDownList?

@Html.DropDownList("MyList", Model.DropdownNamesAndValues) 

que funciona muy bien, excepto que una SelectListItem.Text propiedad en la lista DropdownNamesAndValues puede tener etiquetas HTML negrita o cursiva en ella. Estos están actualmente apareciendo literalmente en el menú desplegable (por ejemplo, <i>hello</i> world). Lo que me gustaría saber cómo hacerlo es:

  • Cómo aplicar @ Html.Raw a cada una de las propiedades SelectListItem.Text?
  • En su defecto, ¿existe una manera fácil de eliminar las etiquetas HTML? Básicamente cualquier cosa en lugar de mostrarlos literalmente como en el presente.
+1

Debe quitar las etiquetas html antes de la vista. En el controlador o, preferiblemente, en el modelo en el que se espera obtener los valores. –

+0

@Bfelfellahull Gracias, estoy usando regex para quitarlos en el modelo ahora. Si haces de esto una respuesta, la aceptaré ya que fuiste el primero en responder. – mikel

Respuesta

1

Debe quitar las etiquetas html antes de la vista. En el controlador o, preferiblemente, en el modelo en el que se espera obtener los valores.

2

Escriba en el controlador un método que busque los subconjuntos <*> and </*> en sus cadenas y elimínelos.

No creo que pueda agregar etiquetas html a la lista desplegable.

2

puede ser que necesite para eliminar aquellos elementos HTML de usted modelo en sí, a continuación, llevar los datos limpiados para anexar a la vista del dropdownlist

1

Si desea permitir que el código HTML que se emita sin codificación, podría extender la DropDownList helper para que pueda excluir la llamada a HttpUtility.HtmlEncode() en el método ListItemToOption. Parece que tendrá que usar una gran cantidad de código, pero ampliarlo (para un propósito diferente) se describe en this article.