2013-04-23 2 views
1

У меня есть строка, которая выглядит как: Foo's BazzРендер апострофа через MvcHtmlString.Create()

Я использую пользовательский HtmlHelper, чтобы сделать этот текст внутри сОн элемента:

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-представление апострофа, а не самого апострофа.

Я пробовал следовать совету, найденному в Escaping single quote from an MVC 3 Razor View variable, путем вызова JavaScriptStringEncode. Я также пытаюсь HtmlDecode. Не имеет никакого эффекта.

Мне было интересно, что мне нужно сделать, чтобы добиться рендеринга фактического апострофа, а не только разметки HTML внутри моего элемента div.

+0

Амперсанд символ' должен быть закодирован в его код объекта '' & –

+0

Почему JavaScript помечаются? – 2013-04-24 04:34:26

ответ

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")) 
+0

Так что мне пришлось вызвать HttpUtility.HtmlDecode после вызова tag.ToString (TagRenderMode.Normal). Если я назову его для SetInnerText, тэг преобразует его обратно. –

Смежные вопросы