我正在寻找将数据从我的剃刀视图传递到我的js文件的最佳方法。例如,假设我们在js文件中配置了jquery对话框。对于此对话框上的按钮文本,我想将其本地化(通过资源文件FR / NL / UK)。 @ UserResource.ButtonDelete + @ UserResource.ButtonCancel
提供翻译版本。以下是我看到的不同解决方案:
使用漂亮的RazorJS nuget包来允许我的javascript文件中的razor代码。它工作得很好。但问题是:编译js文件以便在脚本中使用razor语法是不好的做法?
在js脚本文件中声明全局变量,并从视图中分配值,如下所示:
在视图中:
<script>
var labelButtonDelete = @UserResource.ButtonDelete;
</script>
在js文件中:
alert('The text for my button is ' + labelButtonDelete);
将数据从razor传递到js文件的最佳方法是什么?你有另一种选择吗?
非常感谢。
答案 0 :(得分:1)
我一直在使用类似你的第二种方法,而没有任何问题。唯一的区别是我在JS文件中使用singleton来避免污染全局javascript命名空间。
但是如果你要做更严肃的客户端事情,你的Javascript代码将遵循更加面向对象的结构,从那里你几乎自动获得一个初始化/构造函数路径,你可以传递你的本地化值。
RazorJS看起来不错,但我不确定我是否愿意将Javascript与Razor混合使用。可能会为一个小项目做,但如果你有很多Javascript文件,我会发现它变得非常混乱。
毕竟,我仍然认为资源/本地化代码与视图相关。 Javascript应该只在我看来实现功能。