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.
Есть ли способ сохранить & от форматирования до &
, или есть лучший способ решить мою проблему?