我想在服务器上的 C# 和客户端上的 Javascript 中都使用字符串常量。
我将常量封装在 C# 类中
namespace MyModel
{
public static class Constants
{
public const string T_URL = "url";
public const string T_TEXT = "text";
. . .
}
}
我找到了一种使用 Razor 语法在 Javascript 中使用这些常量的方法,但它对我来说看起来很奇怪:
@using MyModel
<script type="text/javascript">
var T_URL = '@Constants.T_URL';
var T_TEXT = '@Constants.T_TEXT';
. . .
var selValue = $('select#idTagType').val();
if (selValue == T_TEXT) { ...
有没有更“优雅”的方式在 C# 和 Javascript 之间共享常量?
(或者至少更加自动化,所以我不必在两个文件中进行更改)
你使用它的方式是危险的。想象一下你的一些常量包含一个引号,或者更糟糕的是一些其他危险字符 => 会破坏你的 JavaScript。
我建议您编写一个控制器操作,它将所有常量作为 javascript 提供服务:
public ActionResult Constants()
{
var constants = typeof(Constants)
.GetFields()
.ToDictionary(x => x.Name, x => x.GetValue(null));
var json = new JavaScriptSerializer().Serialize(constants);
return JavaScript("var constants = " + json + ";");
}
然后在您的布局中引用此脚本:
<script type="text/javascript" src="@Url.Action("Constants")"></script>
现在,每当您在脚本中需要常量时,只需按名称使用它即可:
<script type="text/javascript">
alert(constants.T_URL);
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)