gpt4 book ai didi

javascript - 在 MVC Razor 中的 C# 和 Javascript 之间共享常量

转载 作者:IT王子 更新时间:2023-10-29 03:18:01 25 4
gpt4 key购买 nike

我想在两端使用字符串常量,在服务器的 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。

我建议您编写一个 Controller 操作,它将所有常量作为 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>

关于javascript - 在 MVC Razor 中的 C# 和 Javascript 之间共享常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217028/

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