我可以混合使用吗?在javascript中匹配javascript与服务器端代码?

时间:2012-03-07 14:10:33

标签: javascript asp.net devexpress client-side

我知道这可能是一个奇怪的情况,但目前我需要将javascript与服务器端代码混合如下:

 function PerformGlobalCallback(sender, value) {
        var index = hfCurrentTabIndex.Get("activeIndex"));
        window['<%= ((ASPxCallbackPanel)myTabControl.TabPages[index].Controls[0]).ClientInstanceName %>'].PerformCallback(sender + "|" + value);
    } 

其中hfCurrentTabIndex是一个隐藏字段,它正确保存当前选项卡索引的值。 我知道我不能简单地将“index”变量放在&lt;%=%&gt;中因此我需要想出办法来实现它。

我需要这个的原因是因为myTabControl当前选项卡索引在回调之间以某种方式丢失。此外,即使我将它存储在Session中,当我在上面的代码中访问它时,我得到null。

如果您有任何见解,请与我们联系。感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

var clientInstanceNames = [];
<%
    for(int x=0; x<myTabControl.TabPages.Count; x++) 
    {
        Response.Write("clientInstanceNames[" + x.ToString() + "] = \"" + (ASPxCallbackPanel)myTabControl.TabPages[x].Controls[0]).ClientInstanceName + "\";");
    }
%>
function PerformGlobalCallback(sender, value) {
    var index = hfCurrentTabIndex.Get("activeIndex"));
    window[clientInstanceNames[index]].PerformCallback(sender + "|" + value);
} 

那应该做你想要的。

首先处理服务器端代码,以便在客户端浏览器处理JavaScript之前将页面发送到客户端浏览器。您还可以使用AJAX调用来获取.ClientInstanceName。但上面演示的方式为您构建服务器上的JavaScript数组,因此您的客户端代码只需要查找索引。

注意代码是在我的浏览器窗口中编写的,未经过测试,因此可能存在语法错误。

答案 1 :(得分:0)

在使用服务器生成的数据设置javascript时经常完成。

var myjsVariable = "<%= SomeServerSideVariable %>'

但是,你做的方式不会起作用。

这个位是javascript(客户端)

var index = hfCurrentTabIndex.Get("activeIndex");

但是,您尝试在服务器端调用中使用该客户端变量:

<%= ((ASPxCallbackPanel)myTabControl.TabPages[index].Controls[0]).ClientInstanceName %>
-----------------------------------------------^