ASP.NET MVC 5 TagBuilder.MergeAttribute преобразует & в & amp;

Я тщательно искал ответ для этой конкретной проблемы, но, похоже, не могу найти ответ.

У меня есть ниже TagBuilder, который принимает строку URL, созданный UrlHelper. Проблема в том, что как только я использую MergeAttribute для атрибута href, & преобразуется в &,

public static IHtmlString ModalLink(this HtmlHelper helper, string linkText, string link, string title = "External Link", string actionName="External", string controllerName="ModalPopup")
    {
        var anchor = new TagBuilder("a");

        UrlHelper context = new UrlHelper(HttpContext.Current.Request.RequestContext);

        string urlString = context.Action(
            actionName, 
            controllerName,
            new {Title = title, Link = link}
            );

        anchor.MergeAttribute("href", urlString);

        anchor.InnerHtml = linkText;

        return MvcHtmlString.Create(anchor.ToString());
    }

Я проверил, что urlString дает мне URL-адрес, который я ожидаю, но как только он добавлен в TagBuilder через MergeAttribute, он кодируется в формате html. На мой взгляд, я попробовал оба

    @Html.Raw(Html.ModalLink("blah blah", "http://www.example.com", "Example"))

а также

    @Html.ModalLink("blah blah", "http://www.example.com", "Example")

но оба возвращают один и тот же амперсанд в возвращаемом значении. Я, очевидно, новичок в ASP.NET, но для меня важно, чтобы я создал чистый и элегантный метод, и я бы предпочел не использовать Html.Raw.

Есть ли способ сохранить & от форматирования до &, или есть лучший способ решить мою проблему?

0 ответов

Другие вопросы по тегам