我在 item.Name 中有一个变量,其中包含字符串“It's Tuesday!”。 为了减轻 javascript 错误,在 c# Controller 中我已经转义了这个单引号。 在网页上,它显示为“It\'s Tuesday!”。
这至少可以防止任何 javascript 错误,但是,我不希望显示的实际字符串包含已转义的反斜杠。
一旦处理了 javascript 错误,我如何才能恢复转义?这感觉像是一个相当简单的问题,但我对 MVC 3 有点陌生。非常感谢任何提示!我的搜索没有找到任何特定于此的示例。
我在 Razor View 中的代码示例:
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.Name) // item.Name = "It\'s Tuesday!"
}
最佳答案
创建一个您可以使用的扩展方法或直接编码。我不会在 View 获取它之前进行编码,除非您在 View 模型中有一个单独的属性用于此目的(这不是一个坏主意()
这没有经过测试,但符合这些思路
public static class HtmlExtensions
{
public static IHtmlString JavaScriptEncode(this HtmlHelper html, string item)
{
return new HtmlString(HttpUtility.JavaScriptStringEncode(item));
}
}
然后您可以从 View 中调用 @Html.JavaScriptEncode(yourProperty) 或简单地引用您的编码属性名称。
关于javascript - 从 MVC 3 Razor View 变量中转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479260/