Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的asp.net-mvc文件中,如何将javascript移动到单独的js文件中?_Javascript_Asp.net Mvc - Fatal编程技术网

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

在我的asp.net-mvc文件中,如何将javascript移动到单独的js文件中?,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我的视图中有一堆javascript,它变得相当大,所以我想把它移到一个单独的js文件中。我的一个问题是,我有这样一句话: var tags = <%= new JavaScriptSerializer().Serialize(Model.Tags) %>; var标签=; 我显然不能复制它,因为它有服务器端的asp.net-mvc标记。建议的解决方法是什么: 将这个函数保存在aspx页面中,并让单独的js文件中的javascript调用该函数 其他 这在很大程度上取决于你想要

我的视图中有一堆javascript,它变得相当大,所以我想把它移到一个单独的js文件中。我的一个问题是,我有这样一句话:

 var tags = <%= new JavaScriptSerializer().Serialize(Model.Tags) %>;
var标签=;
我显然不能复制它,因为它有服务器端的asp.net-mvc标记。建议的解决方法是什么:

  • 将这个函数保存在aspx页面中,并让单独的js文件中的javascript调用该函数

  • 其他


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

    一些想法:

  • 标记是静态的。那我想那就不需要在模型里了。因此,您可以将它们移动到一个新的控制器动作中,该动作输出scipt。您可以在视图的
    部分调用此操作
  • 标记
    变化非常频繁(甚至在每次页面加载时)。那么,在一个单独的脚本文件中移动它是没有好处的

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

    例如:

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

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

    您的Javascript需要如下所示:

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