动态js文件的标准解决方法是什么

时间:2015-05-26 14:32:43

标签: javascript asp.net asp.net-mvc

在ASP.NET中是否存在类似这样的标准解决方法:

//myinclude.js
$(document).ready(function() {
    for(recs=0; recs < {{server-side-value}}; recs++) {
        // process records
    }
});

注意这是一个js文件。我知道WinForms能够将动态引用脚本插入页面。但是页面的js文件如何依赖于服务器端值?我知道你可以使用类似的东西:

//myview.cshtml    
var instance = new MyObject(<%= ServerSideValue =%>);

并将其包含在页面上以将其传递给js文件,但我想知道将js与html代码分开的架构,以便html / css设计师可以使用免费的javascript模板;保持一切分开。我现在主要使用MVC。

有哪些模式可以解决这个问题?唯一的解决方案是将js动态插入到实际页面中,或者将部分视图单独包含在页面中。或者有没有办法在分离的js中撒上服务器端值?简而言之,没有动态的js文件?

我现在不想修复一个确切的项目,我对过去的项目一直很好奇。

...谢谢

3 个答案:

答案 0 :(得分:1)

有多种方法可以实现这一目标。其中一种方法是将数据直接填充到HTML页面上的Javascript对象中。

//myview.cshtml    

<script>
  var pageData = {
    name : '@variable1',
    value1: @value1
  }; 
</script>

并且,在javascript文件中:

//pageUI.js
if (pageData) {
  $('#page_tile').html(pageData.name);
}

我相信你可以优化一大堆(例如,在服务器端数据和客户端代码之间进行单一通信)。在一天结束时,您需要确保您的JavaScript代码可以重复使用。

答案 1 :(得分:1)

例如,人们可以这样做:

一个。让主.js代码从当前窗口读取任何特定于上下文的参数,如下所示(page.js):

!function(window){
 var configData = window.MyAppNameConfigData;
// rest app code here..
}(window);

B中。服务器端脚本可以在页面的html中注入这些特定于上下文的数据,如下所示:

<script>
window.MyAppNameConfigData = {
  param1: //..
  param2: //..
  // etc..
};
</script>

注意如果需要,请确保{<1}}在注入/插入数据后加入/加载(例如,使用脚本依赖关系链)

答案 2 :(得分:1)

如果它不是“内联”(在视图/页面本身上),您可以执行部分​​视图/页面:

琐碎的例子:_PartialJs.cshtml

$(document).ready(function() {
    var foo = "@DateTime.Now.Year";
});

然后在你看来:

<script>
    @Html.Partial("_PartialJs")
</script>

渲染:

<script>
    $(document).ready(function() {
       var foo = "2015";
    });
</script>

... H个