ASP.NET MVC 3:UrlHelper / HtmlHelper上的扩展方法编码为HTML

时间:2011-11-19 12:16:46

标签: c# asp.net-mvc asp.net-mvc-3 razor

我为UrlHelper编写了一些扩展方法,以便更轻松地加载或标记。但是,似乎它在浏览器中呈现为文字文本。这就是我所拥有的:

public static string Script(this UrlHelper helper, string scriptPath)
        {
            return string.Format(@"<script src=""{0}"" type=""text/javascript""></script>", helper.Content(scriptPath));
        }

这是我的.cshtml代码:

@section HeadContent
{
    @Url.Style("MyStyleName")
    @Url.Script("MyScriptName")
    @Url.MetaKeywords("My Keywords")
    @Url.MetaDescription("Some Description")
}

它出现在&lt;script [etc, etc]&gt;

的浏览器中

如果我不使用扩展方法,它将按预期正常工作...如何使其与我的扩展程序一起使用?

2 个答案:

答案 0 :(得分:2)

试试这个:

public static string Script(this UrlHelper helper, string scriptPath)
{
    return MvcHtmlString.Create(string.Format(@"<script src=""{0}"" type=""text/javascript""></script>", helper.Content(scriptPath)));
}

答案 1 :(得分:2)

所有HTML帮助程序都需要返回MvcHtmlString。如果您只返回一个字符串,它将被视为不受信任的值,并将进行HTML编码。