Html.Encode和包含html片段的字符串

时间:2011-04-21 09:28:11

标签: c# asp.net-mvc-3 html-encode

我试图在某些文字中突出显示搜索结果。我写了一个扩展方法:

public static string Highlight(this HtmlHelper html, string input, string searchPhrase)
{
    Regex.Replace(input, 
                  "\\b" + searchPhrase + "\\b", 
                  "<strong>" + searchPhrase + "</strong>", 
                  RegexOptions.IgnoreCase);
}

但是很明显,当这是Html.Encoded从视图中,html标签只是作为文本的一部分呈现。

有更好的方法吗?或者,如果我的想法没问题,我该如何使其发挥作用?

1 个答案:

答案 0 :(得分:3)

public static MvcHtmlString Highlight(this HtmlHelper html, string input, string searchPhrase)
{
    var value = Regex.Replace(
        input, 
        "\\b" + searchPhrase + "\\b", 
        "<strong>" + searchPhrase + "</strong>", 
        RegexOptions.IgnoreCase
    );
    return MvcHtmlString.Create(value);
}

并在视图中:

@Html.Highlight("foo", "f")