在我的asp.net-mvc文件中,如何将我的javascript移动到单独的js文件中?

时间:2014-04-18 12:38:02

标签: javascript asp.net-mvc

我的视图中有一堆javascript,它变得非常大,所以我想把它移到一个单独的js文件中。我遇到的一个问题是我有这条线:

 var tags = <%= new JavaScriptSerializer().Serialize(Model.Tags) %>;

我显然不能复制,因为它有服务器端asp.net-mvc标签。建议的解决方法是什么:

  1. 将这个函数保存在aspx页面中,并从单独的js文件中调用该函数调用该函数吗?

  2. 其他??

3 个答案:

答案 0 :(得分:1)

你可以做的是让一个JavaScript对象包含你从控制器获得的所有信息,并通过一个位于外部javascript文件中的javascript函数传递它。您还可以通过选项变量传递其他信息。

示例:

 var options = {
    tags: <%= new JavaScriptSerializer().Serialize(Model.Tags) %>
 };
 initPage(options);

用法:

function initPage(options) {
    console.log(options.tags);
}

答案 1 :(得分:0)

这很大程度上取决于你想要使用它的方式和重复的程度。

一些想法:

  1. tags是静态的。然后我想那时候真的不需要参加模特。因此,您可以将它们移动到输出scipt的新Controller操作中。您可以在视图的<script>部分中调用此操作。
  2. tags正在经常变化(甚至可能在每次页面加载时)。然后在单独的脚本文件中移动它没有任何好处。

答案 2 :(得分:0)

如果使用正确的闭包设置javascript文件,则可以在调用该函数时公开属性(或者更好的是对象/方法的参数),以便传递该信息。

你的Javascript需要是这样的:

var JsFile = (function() {
    var tags;
    // list all of your methods here.

    return {
        var setTags = function(_tags) {
            tags = _tags;
        }
    };
})();