Question

Dans une vue ASP.NET MVC, j'aimerais inclure un lien de la forme suivante:

<a href="blah">Link text <span>with further descriptive text</span></a>

Essayer d'inclure l'élément <span> dans le champ linkText d'un appel à Html.ActionLink() aboutit à son codage (comme on pouvait s'y attendre).

Existe-t-il des moyens recommandés pour y parvenir?

Était-ce utile?

La solution

Vous pouvez utiliser Url.Action pour créer le lien pour vous:

<a href="<% =Url.Action("Action", "Controller")%>">link text <span>with further blablah</span></a>

ou utilisez Html.BuildUrlFromExpression:

<a href="<% =Html.BuildUrlFromExpression<Controller>(c => c.Action()) %>">text <span>text</span></a>

Autres conseils

si vous aimez utiliser Razor, cela devrait fonctionner:

<a href="@Url.Action("Action", "Controller")">link text <span>with further blablah</span></a>

Une autre option consiste à rendre le lien de votre action vers une chaîne MvcHtmlString comme d'habitude, en utilisant HTML.ActionLink ou Ajax.ActionLink (selon votre contexte), puis en écrivant une classe prenant le rendu de MvcHtmlString et en hacant le texte de lien html. directement dans le MvcHtmlString déjà rendu et renvoie un autre MvcHtmlString.

Il s’agit donc de la classe qui fait cela: [notez que le code d’insertion / substitution est TRÈS simple et qu’il faudra peut-être le renforcer pour gérer davantage de HTML imbriqué]

namespace Bonk.Framework
{
    public class CustomHTML
    {
        static public MvcHtmlString AddLinkText(MvcHtmlString htmlString, string linkText)
        {
            string raw = htmlString.ToString();

            string left = raw.Substring(0, raw.IndexOf(">") + 1);
            string right = raw.Substring(raw.LastIndexOf("<"));

            string composed = left + linkText + right;

            return new MvcHtmlString(composed);
        }
    }
}

Et vous l'utiliseriez dans la vue comme ceci:

@Bonk.Framework.CustomHTML.AddLinkText(Ajax.ActionLink("text to be replaced", "DeleteNotificationCorporateRecipient"), @"Link text <span>with further descriptive text</span>")

Cette approche présente l’avantage de ne pas avoir à reproduire / comprendre le processus de rendu des balises.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top