从javaScript执行服务器端代码

Executing serverside code from javaScript

本文关键字:代码 服务器端 执行 javaScript      更新时间:2023-09-26

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

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

谢谢。

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

使用JQuery进行简写:

var regEx_gaid = "";
$.get('regex_gaid.aspx', function(data) {
  regEx_gaid = data;
});

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

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

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

您可以添加一个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"] %>;

CodeBehind:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ContentType = "application/javascript";
    }

其他文件:

<script type="text/javascript" src="js/main.js.aspx"></script>