将数据从我的剃刀视图传递到我的js文件

时间:2012-03-08 10:35:59

标签: javascript visual-studio razor

我正在寻找将数据从我的剃刀视图传递到我的js文件的最佳方法。例如,假设我们在js文件中配置了jquery对话框。对于此对话框上的按钮文本,我想将其本地化(通过资源文件FR / NL / UK)。 @ UserResource.ButtonDelete + @ UserResource.ButtonCancel

提供翻译版本。

以下是我看到的不同解决方案:

  1. 使用漂亮的RazorJS nuget包来允许我的javascript文件中的razor代码。它工作得很好。但问题是:编译js文件以便在脚本中使用razor语法是不好的做法?

  2. 在js脚本文件中声明全局变量,并从视图中分配值,如下所示:

  3. 在视图中:

    <script>
            var labelButtonDelete = @UserResource.ButtonDelete;
    </script>
    

    在js文件中:

    alert('The text for my button is ' + labelButtonDelete);
    

    将数据从razor传递到js文件的最佳方法是什么?你有另一种选择吗?

    非常感谢。

1 个答案:

答案 0 :(得分:1)

我一直在使用类似你的第二种方法,而没有任何问题。唯一的区别是我在JS文件中使用singleton来避免污染全局javascript命名空间。

但是如果你要做更严肃的客户端事情,你的Javascript代码将遵循更加面向对象的结构,从那里你几乎自动获得一个初始化/构造函数路径,你可以传递你的本地化值。

RazorJS看起来不错,但我不确定我是否愿意将Javascript与Razor混合使用。可能会为一个小项目做,但如果你有很多Javascript文件,我会发现它变得非常混乱。

毕竟,我仍然认为资源/本地化代码与视图相关。 Javascript应该只在我看来实现功能。