MvcHtmlString.Create() 方法不返回 HTML 编码字符串。

4

我可能漏掉了什么,因为这篇文档说,MvcHtmlString.Create("someStringHere")返回一个html编码的字符串,但如果我有像MvcHtmlString.Create("<h1>myHeading</h1>")这样的内容,它仍然会显示为

myHeading

(作为标题),而不是编码文本&lt;h1&gt;myHeading&lt;/h1&gt;

那么这个声明的意思是什么呢?

MvcHtmlString.Create(String)
使用指定的文本值创建一个HTML编码的字符串。

我无法理解,如果有人能解释该文档的含义以及他们试图引用的编码与HTML编码之间的区别,将不胜感激。

先谢谢了!


你可以使用 @Html.Encode(<MyHtmlStringHere>) 代替。 - vikscool
@vikscool,你说得对,但我的问题不是要解决我的问题,而是要理解MvcHtmlString的用法以及它提供的优势,并指出文档存在误导。 - eRaisedToX
1个回答

4

我认为对于MvcHtmlString的文档有误导性。

然而,MvcHtmlString旨在在您不想使用HTML编码字符串时使用。Razor的默认行为是对输出进行编码。

传递给它的Html字符串应该已经编码,以确保它被输出时不会再次被编码。

因此,假设以下的HTML助手:

public static class HtmlHelper
{     
    public static string GetHtmlString(this System.Web.Mvc.HtmlHelper htmlHelper)
    {
        return "<h1>myHeading</h1>";
    }

    public static MvcHtmlString GetMvcHtmlString(this System.Web.Mvc.HtmlHelper htmlHelper)
    {
        return MvcHtmlString.Create("<h1>myHeading</h1>");
    }
}

使用Razor视图:

@Html.GetHtmlString()
@Html.GetMvcHtmlString()

输出将是: &lt;h1&gt;myHeading&lt;/h1&gt

我的标题


1
是的,完全误导了,我很困惑,在自己实现之后才理解。我不知道该如何更新文档以防止其他人获取错误信息。 - eRaisedToX
2
每个文档页面的顶部都有一个编辑按钮。您可以通过提交拉取请求给微软团队来编辑此文档:)。 - Luke
哦,太好了!我不知道这个。 - eRaisedToX
很高兴能够提供帮助。 - Luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接