在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文件?
我现在不想修复一个确切的项目,我对过去的项目一直很好奇。
...谢谢
答案 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个