从MVC 3 Razor View变量中转义单引号

Joh*_*ion 6 javascript escaping asp.net-mvc-3

我在item.Name中有一个变量,其中包含字符串"It's Tuesday!".为了缓解javascript错误,在c#控制器中我已经逃过了这个单引号.在网页上,它看起来像是"这是星期二!".

这至少可以防止任何javascript错误,但是,我不希望显示的实际字符串包含已经转义它的反斜杠.

一旦javascript错误已被处理,我怎么能够恢复转义?这感觉就像一个相当简单的问题,但我对MVC 3有点不熟悉.任何提示都非常感谢!我的搜索没有找到任何特定于此的示例.

我在剃刀视图中的代码示例:

@foreach (var item in Model)
{ 
    @Html.DisplayFor(modelItem => item.Name) // item.Name = "It\'s Tuesday!"
} 
Run Code Online (Sandbox Code Playgroud)

Ada*_*SFT 21

创建一个可以使用的扩展方法或直接编码.我不会在视图获取之前进行编码,除非你的viewmodel中有一个单独的属性用于此(不是一个坏主意()

这不是经过测试,而是沿着这些方向发展


public static class HtmlExtensions

{
    public static IHtmlString JavaScriptEncode(this HtmlHelper html, string item)
    {
        return new HtmlString(HttpUtility.JavaScriptStringEncode(item));
    }
}

然后,您可以从视图中调用@ Html.JavaScriptEncode(yourProperty),或者只是引用您的编码属性名称.


Rub*_*ord 10

以下内容可用于防止再次编码输出.然而,这确实依赖于您自己正确处理它.

MVCHTMLString

@MvcHtmlString.Create(yourString)
Run Code Online (Sandbox Code Playgroud)