不确定这是否可行,但这是我的情景:
在我们的大约10个aspx文件中,我们有相同的javaScript函数,我想从所有这些页面中删除它并将它放在主javaScript文件(main.js)中,这对所有页面都是全局的,因此它更容易维护。当前aspx页面中的javaScript代码如下所示:
var regEx_gaid = <%= regEx["regEx_gaid"] %>;
var regEx_wCard = <%= regEx["regEx_wildCard"] %>;
var regEx_fCss = <%= regEx["regEx_flattenCss"] %>;
var regEx_iCss = <%= regEx["regEx_inlineCss"] %>;
...
function doSomething() {
// do something with those variables declared above.
}
不确定如何在main.js中获取这些变量的服务器端值。
这也可能是相关的:
<%= regEx["regEx_gaid"] %>
内的“regEx”是服务器端的字典集合,“regEx_gain”是访问regEx字典值的关键。
感谢。
答案 0 :(得分:1)
在您的网页中,您可以使用RegisterStartupScript在每个页面中动态创建这些javascript变量:
this.ClientScript.RegisterStartupScript(this.GetType(), "MainVars", "var regEx_gaid = '" + regex_gaid.ClientID + "';", true);
我们广泛使用这种机制:在代码隐藏中注册控制变量(它们被发送到每个页面),然后在中央脚本中使用它们(类似于你的main.js)。
答案 1 :(得分:1)
您可以拥有一个单独的ASP页面,它只输出变量的内容。然后你可以从javascript向该页面发出一个AJAX请求。
使用JQuery进行简写:
var regEx_gaid = "";
$.get('regex_gaid.aspx', function(data) {
regEx_gaid = data;
});
答案 2 :(得分:1)
您可以添加main.js.aspx
然后将main.js
中的脚本移至main.js.aspx
,并将main.js.aspx用作javascript文件吗?
main.js.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="main.aspx.cs" Inherits="TempProject.js.main" %>
var regEx_gaid = <%= regEx["regEx_gaid"] %>;
var regEx_wCard = <%= regEx["regEx_wildCard"] %>;
var regEx_fCss = <%= regEx["regEx_flattenCss"] %>;
var regEx_iCss = <%= regEx["regEx_inlineCss"] %>;
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/javascript";
}
其他档案:
<script type="text/javascript" src="js/main.js.aspx"></script>