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

本文关键字:扩展 方法 编码 HTML HtmlHelper MVC NET UrlHelper ASP | 更新日期: 2023-09-27 18:15:21

我为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;

如果我不使用扩展方法,它将如预期的那样正常工作…我怎样才能使它与我的扩展工作?

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

试试这个:

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

所有HTML helper都需要返回MvcHtmlString。如果您只是返回一个字符串,它将被视为一个不受信任的值,并将被html编码。