通过MvcHtmlString.Create()渲染撇号

时间:2013-04-23 19:19:29

标签: javascript html asp.net-mvc-3

我有一个类似于Foo's Bazz

的字符串

我使用自定义HtmlHelper在div元素中呈现此文本:

public static MvcHtmlString DisplayWithReadonlyIdFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
{
    string readonlyId = "Readonly" + helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));

    TagBuilder tag = new TagBuilder("div");
    tag.MergeAttributes(new RouteValueDictionary(htmlAttributes));

    tag.SetInnerText(helper.DisplayFor(expression).ToString());

    return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}

使用这段代码,我仍然可以看到撇号的HTML表示,而不是撇号本身。

我尝试通过调用JavaScriptStringEncode来遵循Escaping single quote from an MVC 3 Razor View variable中的建议。我也尝试过HtmlDecode。没有任何影响。

我想知道我需要做些什么来实现渲染实际的撇号,而不仅仅是我的div元素中的HTML标记。

1 个答案:

答案 0 :(得分:2)

你在下面试过吗?

HttpUtility.HtmlDecode("Some value");
HttpUtility.HtmlEncode("Some value");

示例

string value1 = "&lt;html&gt;";                 //&lt;html&gt;
string value2 = HttpUtility.HtmlDecode(value1); //<html>
string value3 = HttpUtility.HtmlEncode(value2); //&lt;html&gt;

MvcHtmlString.Create(HttpUtility.HtmlDecode("Some value"))