SNa*_*Nag 5 c# razor asp.net-mvc-5
我有一些常量用于保存在RESX文件中的JS,例如:
DATE_PICKER_FORMAT yyyy-mm-dd
DATETIME_FORMAT yyyy-mm-dd hh:mm:ss
MONTH_PICKER_FORMAT yyyy-mm
Run Code Online (Sandbox Code Playgroud)
我写了一个简单的类来帮助在Razor视图中将其写入JS:
public static class JavascriptResourceRenderer
{
private static string Render(ResourceSet resources)
{
string resourceString = "";
foreach (DictionaryEntry resource in resources)
{
resourceString += String.Format("var {0} = '{1}'; ", resource.Key, resource.Value);
}
return resourceString;
}
public static string RenderPageConstants()
{
ResourceSet resources = PageConstants.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
return Render(resources);
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我这样做:
@section Scripts
{
<script>
@JavascriptResourceRenderer.RenderPageConstants()
</script>
}
Run Code Online (Sandbox Code Playgroud)
当视图加载时,常量会被渲染,除了引号出来编码.
使用DOM检查器查看HTML,这是我看到的:
<script>
var MONTH_PICKER_FORMAT = 'yyyy-mm';
</script>
Run Code Online (Sandbox Code Playgroud)
我试过了
"var {0} = '{1}'; " // writes 'yyyy-mm' to view
"var {0} = \"{1}\"; " // writes "yyyy-mm" to view
@"var {0} = "{1}"; " // syntax error in String.Format
Run Code Online (Sandbox Code Playgroud)
我该怎么写
<script>
var MONTH_PICKER_FORMAT = "yyyy-mm"; // or 'yyyy-mm' (I want the quotes!)
</script>
Run Code Online (Sandbox Code Playgroud)
到了视野?
您的字符串正在进行 HTML 编码。
您需要输出原始文本。您的视图需要执行以下操作:
@section Scripts
{
<script>
@Html.Raw(JavascriptResourceRenderer.RenderPageConstants())
</script>
}
Run Code Online (Sandbox Code Playgroud)
您应该将输出作为输入返回MvcHtmlString,否则MVC将对其进行编码:
private static MvcHtmlString Render(ResourceSet resources)
{
string resourceString = "";
foreach (DictionaryEntry resource in resources)
{
resourceString += String.Format("var {0} = '{1}'; ", resource.Key, resource.Value);
}
return new MvcHtmlString(resourceString);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以Html.Raw在视图中使用Html Helper方法,但是每次调用方法时都需要记住这样做(这就是我不建议这样做的原因):
@Html.Raw(JavascriptResourceRenderer.RenderPageConstants())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |