我彻底寻找这个特定问题的答案,但似乎找不到答案。
我有下面的 TagBuilder,它采用由 UrlHelper 创建的字符串 url。问题是,一旦我将 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,但是一旦它通过 MergeAttribute 添加到 TagBuilder 中,它就会被 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。
有没有办法让 & 从格式化到&
,或者有更好的方法来解决我的问题?