gpt4 book ai didi

c# - 如何将引号 ("or ' ) 和带引号的字符串写入 Razor View

转载 作者:太空狗 更新时间:2023-10-29 22:30:37 25 4
gpt4 key购买 nike

我有一堆要在JS中使用的常量保存在一个RESX文件中,比如:

DATE_PICKER_FORMAT   yyyy-mm-dd  
DATETIME_FORMAT yyyy-mm-dd hh:mm:ss
MONTH_PICKER_FORMAT yyyy-mm

我写了一个简单的类来帮助在 Razor View 上将其写入 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);
}
}

在我看来,我正在这样做:

@section Scripts
{
<script>
@JavascriptResourceRenderer.RenderPageConstants()
</script>
}

常量会在 View 加载时呈现,除了引号经过编码。

使用 DOM 检查器查看 HTML,这是我看到的:

<script>
var MONTH_PICKER_FORMAT = &#39;yyyy-mm&#39;;
</script>

我试过了

"var {0} = '{1}'; "   // writes &#39;yyyy-mm&#39; to view
"var {0} = \"{1}\"; " // writes &quot;yyyy-mm&quot; to view
@"var {0} = "{1}"; " // syntax error in String.Format

我该怎么写

<script>
var MONTH_PICKER_FORMAT = "yyyy-mm"; // or 'yyyy-mm' (I want the quotes!)
</script>

到 View ?

最佳答案

您应该将输出返回为 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);
}

或者,您可以使用 Html Helper 方法 Html.Raw在您看来,但您需要记住每次调用该方法时都这样做(这就是为什么我不建议这样做的原因):

@Html.Raw(JavascriptResourceRenderer.RenderPageConstants())

关于c# - 如何将引号 ("or ' ) 和带引号的字符串写入 Razor View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31585017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com