5

不确定这是否可能,但这是我的场景:

在我们的大约 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["regEx_gaid"] %>是服务器端的字典集合,“regEx_gain”是访问regEx字典值的关键。

谢谢。

4

3 回答 3

1

在您的页面中,您可以使用RegisterStartupScript在每个页面中动态创建这些 javascript 变量:

this.ClientScript.RegisterStartupScript(this.GetType(), "MainVars", "var regEx_gaid = '" + regex_gaid.ClientID + "';", true);

我们广泛使用这种机制:在代码隐藏中注册控制变量(它们被发送到每个页面),然后在中央脚本中使用它们(类似于您的 main.js)。

于 2012-08-03T00:56:13.110 回答
1

您可以有一个单独的 ASP 页面,它只输出变量的内容。然后,您可以从 javascript 向该页面发出 AJAX 请求。

使用 JQuery 进行速记:

var regEx_gaid = "";

$.get('regex_gaid.aspx', function(data) {
  regEx_gaid = data;
});
于 2012-08-03T01:08:13.287 回答
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>
于 2012-08-03T01:58:50.550 回答