Javascript 如何等待ASP.NET多视图通过回发更改其ActiveViewIndex

Javascript 如何等待ASP.NET多视图通过回发更改其ActiveViewIndex,javascript,jquery,asp.net,multiview,Javascript,Jquery,Asp.net,Multiview,我在ASP.NET3.5中工作,使用VB.NET作为我的服务器端语言。我通过jQuery1.5.2使用JavaScript作为客户端语言。我正在尝试使用此页面进行原型/名称空间设置。此页面是使用MultiView的自定义登录页面。我有一个策略登录视图和一个忘记密码视图。我将ActiveViewIndex存储在一个名为currentView的隐藏字段中 在这个项目中,我将部分回发与UpdatePanel一起使用,而JS不会在部分回发上刷新 也就是说,我需要一种方法来等待ActiveViewInde

我在ASP.NET3.5中工作,使用VB.NET作为我的服务器端语言。我通过jQuery1.5.2使用JavaScript作为客户端语言。我正在尝试使用此页面进行原型/名称空间设置。此页面是使用MultiView的自定义登录页面。我有一个策略登录视图和一个忘记密码视图。我将ActiveViewIndex存储在一个名为
currentView
的隐藏字段中

在这个项目中,我将部分回发与UpdatePanel一起使用,而JS不会在部分回发上刷新

也就是说,我需要一种方法来等待ActiveViewIndex在服务器端被更改,这样我就可以对相应的视图调用
init()
函数。这可能吗

我的客户端代码:

全球JS
var页面=
{                   
currentView:getContentElement(“currentView”),
init:函数()
{ 
日志(“初始化页面”);
if(this.currentView===“forgotpassword”){forgotpassword.init();}
else{policyLogon.init();}
}
}; 
page.init();

策略登录视图JS
var policyLogon=
{                       
面板:getContentElement(“PnlogonInfo”,“div”),
submitButton:getContentElement(“btnLogon”,this.panel),
text输入:$(“输入[type=text]”,this.panel),
policyNumber:getContentElement(“txtPolicyNumber”,this.textInputs),
policyNumberError:getContentElement(“lblPolicyNumberError”,this.panel),
密码:getContentElement(“txtPassword”,this.textInputs),
passwordError:getContentElement(“lblPasswordError”,this.panel),
forgotPasswordLink:getContentElement(“lbtnForgotPassword”,this.panel),
init:函数()
{ 
日志(“初始化策略登录”);
var=这个;
//此处创建的其他事件处理程序[编辑以缩短示例代码]。
.forgotPasswordLink.on(“单击”),函数()
{
//等待回发的代码应位于此处。
page.init();
});
即.policyNumber.focus();
}
};

忘记密码查看JS
var forgotPassword=
{
//本地变量,设置方式与策略登录相同,只是不同的元素。
//[修订以保持示例代码简短]
init:函数()
{ 
日志(“初始化忘记密码”);
var=这个;
//此处创建的其他事件处理程序[编辑以缩短示例代码]。
即.policyNumber.focus();
}    
};


作为对what is
getContentElement()
问题的先发制人的打击,
getContentElement()
是我必须创建的一个函数,因为嵌套的母版页必须根据它们使用的母版页对元素进行不同的调用。看起来是这样的:

函数getContentElement(id,上下文) { var publicPrefix=csMasterPrefix+csContentPrefix, securePrefix=cpMasterPrefix+publicPrefix+cpContentPrefix, publicId=“#”+publicPrefix+id, secureId=“#”+securePrefix+id; 返回(上下文) ?(isSecurePage)?$(secureId,上下文):$(publicId,上下文) :(isSecurePage)?$(secureId):$(publicId); }
与其直接调用page.init(),还不如将其绑定到body的onLoad

$(document.ready(){page.init()}


此时,DOM已从服务器返回,并且还设置了
ActiveIndexItem

与其直接调用page.init(),还不如将其绑定到body的onLoad

$(document.ready(){page.init()}


此时,DOM已从服务器返回,并且还设置了
ActiveIndexItem

确定。。。所以我回答了我的问题,但没有特别的回答。我想我可以使用setInterval并持续检查
page.currentView
属性。除了
page.waitForViewChange
最初设置它时,它将始终是未定义的,而不是持续存储它

将我的全局JS更改为:

var页面=
{                               
currentView:未定义,
有效期:未定义,
init:函数()
{ 
日志(“init()被激发”);
this.currentView=getContentElement(“currentView”).val();
日志(“当前视图为[“+this.currentView+”]”);
if(this.currentView===“forgotpassword”){forgotpassword.init();}
else{policyLogon.init();}
clearInterval(this.intervalId);
this.intervalId=未定义;
this.currentView=未定义;
},
waitForViewChange:函数(viewToWaitFor)
{ 
日志(“waitForViewChange()已激发”);
this.currentView=getContentElement(“currentView”).val();
如果(this.currentView==viewToWaitFor){this.init();}
}
};
然后在我的策略登录视图JS中,我更改了
放弃密码链接。单击
事件:

this.forgotPasswordLink.on
(
“点击”,
函数()
{     
page.intervalId=setInterval
( 
'page.waitForViewChange(“放弃密码”)',
300
); 
}
);

好的。。。所以我回答了我的问题,但没有特别的回答。我想我可以使用setInterval并持续检查
page.currentView
属性。并且,除了
page.waitF之外,它将始终是未定义的,而不是不断地存储它