Frage

In einer ASP.NET MVC-Ansicht würde Ich mag einen Link der Form enthalten:

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

Der Versuch, die <span> Element im linkText Feld eines Anrufs zu Html.ActionLink() aufzunehmen endet damit kodiert wird (wie zu erwarten).

Gibt es empfohlene Wege, dies zu erreichen?

War es hilfreich?

Lösung

Sie könnten Url.Action benutzen Sie den Link für Sie zu erstellen:

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

oder Verwendung Html.BuildUrlFromExpression:

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

Andere Tipps

Wenn Sie Razor mag mit, dies sollte funktionieren:

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

Eine weitere Möglichkeit ist die Aktion des Link auf einen MvcHtmlString wie pro normal zu machen, entweder Html.ActionLink, oder Ajax.ActionLink (auf die je nach Kontext), dann eine Klasse schreiben, die die gerenderte MvcHtmlString und hacken Ihren HTML-Link-Text nimmt direkt in die bereits erbrachten MvcHtmlString und gibt eine andere MvcHtmlString.

Das ist also die Klasse, die das tut: [Bitte beachten Sie, dass das Einfügen / Ersetzungscode ist sehr einfach, und Sie können es Rindfleisch müssen mehr verschachtelte HTML zu handhaben]

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);
        }
    }
}

Und dann würden Sie es in der Ansicht wie folgt verwenden:

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

Dieser Ansatz hat den Vorteil, nicht das Tag-Rendering-Verfahren zu reproduzieren / verstehen zu müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top