usar tag route net mvc example data como asp all asp.net-mvc html-encode

asp.net mvc - tag - ¿Cómo omito la codificación HTML cuando uso Html.ActionLink en Mvc?



html.actionlink parameters (5)

Cada vez que uso Html.ActionLink siempre Html codifica mi cadena de visualización. Por ejemplo, quiero que mi enlace se vea así:

<a href="/posts/422/My-Post-Title-Here">More&hellip;</a>

sale de la siguiente manera: More & hellip;

& hellip es "..." en caso de que te lo estés preguntando.

Sin embargo, el actionlink emite el texto real "& hellip;" como el texto del enlace. Tengo el mismo problema con si quiero dar salida a esto:

<a href="/posts/422/My-Post-Title-Here"><em>My-Post-Title-Here</em></a>

Terminé con: <em> My-Post-Title-Here </ em>

¿Alguna idea de cómo hacer esto?


Parece que ActionLink siempre usa llamadas HttpUtility.Encode en el texto del enlace. Puede usar UrlHelper para generar el href y construir la etiqueta de anclaje usted mismo.

<a href=''@Url.Action("Posts", ...)''>More&hellip;</a>

Alternativamente, puede "decodificar" la cadena que pasa a ActionLink. La construcción del enlace en HTML parece ser un poco más legible (para mí), especialmente en Razor. A continuación se muestra el equivalente para la comparación.

@Html.ActionLink(HttpUtility.HtmlDecode("More&hellip;"), "Posts", ...)


Alternativamente, solo use un carácter de elipsis Unicode simple / u2026 y deje que MVC se preocupe por cómo codificarlo. A menos que exista una razón especialmente convincente, necesitaría específicamente una referencia de entidad hellip en lugar de una referencia de caracteres o simplemente incluir el carácter como simples bytes UTF-8.

Alternativa alternativamente: solo use tres períodos. La elipsis (U + 2026) es un carácter de compatibilidad, solo incluido para el viaje de ida y vuelta a las codificaciones pre-Unicode. Te lleva muy poco en comparación con los puntos simples.


Decodifícalo antes de pasar el valor. Acabo de tener este mismo problema (diferentes caracteres) y funciona bien:

P.ej:

@Html.ActionLink(HttpUtility.HtmlDecode(_("&amp;")), "Index", "Home")

Aunque molesto


La respuesta dada por Sam es en realidad correcta y la utilicé en mi solución, así que, por lo tanto, la he probado yo mismo. Es posible que desee eliminar el paréntesis adicional para que se convierta en algo como esto:

@Html.ActionLink(HttpUtility.HtmlDecode("&amp;"), "Index", "Home")


Mira esto:

<p>Some text @(new HtmlString(stringToPaste)) </p>