从javaScript执行服务器端代码

时间:2012-08-03 00:50:46

标签: c# javascript asp.net

不确定这是否可行,但这是我的情景:

在我们的大约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字典值的关键。

感谢。

3 个答案:

答案 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>