【问题标题】:HTML Encoding for HtmlHelper Extension MethodHtmlHelper 扩展方法的 HTML 编码
【发布时间】:2011-05-24 05:32:50
【问题描述】:

首先,我将 MVC 3 RC1 与 Razor 视图引擎一起使用。我有一个看起来像这样的 HTML 助手扩展:

public static string TabbedMenuItem(this HtmlHelper htmlHelper, string text, string actionName, string controllerName) {
    StringBuilder builder = new StringBuilder();
    builder.Append("<li>");

    builder.Append(text);

    builder.Append("</li>");
    return builder.ToString();
}

在视图上它是这样调用的:

@Html.TabbedMenuItem("Home", "Index", "Home")

我遇到的问题是 MVC 会自动对视图中的结果进行 HTML 编码,所以我得到的只是字符串的编码版本:

<li>Home</li>

有人知道如何禁用 HTML 辅助扩展的自动编码吗?

提前致谢 安迪

【问题讨论】:

  • 为了将来参考,MVC 有一个 System.Web.Mvc.TagBuilder 类,您可能想研究一下。它并没有否定返回 IHtmlString 的需求,但它为此类任务提供了比 StringBuilder 更多的功能。

标签: asp.net-mvc asp.net-mvc-3 razor html-encode html-helper


【解决方案1】:

使用TagBuilder

【讨论】:

    【解决方案2】:
    public static IHtmlString TabbedMenuItem(this HtmlHelper htmlHelper, string text, string actionName, string controllerName)
    {
        StringBuilder builder = new StringBuilder();
        builder.Append("<li>");
    
        builder.Append(text);
    
        builder.Append("</li>");
        return MvcHtmlString.Create(builder.ToString());
    }
    

    使用返回值 IHtmlString。 希望对您有所帮助。

    【讨论】:

    • 完美运行。感谢 takepara 非常感谢。
    • 应该是 MvcHtmlString 还是在 ASP.NET MVC 3 中不再是这种情况?
    • @ehdv 好问题;我用谷歌搜索了它,发现(this)[stackoverflow.com/a/3382908/295686](.NET 4+ 中首选 HtmlString)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多