サーバー側の言語としてVB.NETを使用してASP.NET3.5で作業しています。クライアント側の言語としてjQuery1.5.2を介してJavaScriptを使用しています。このページでプロトタイプ/名前空間のセットアップを行おうとしています。このページは、MultiViewを使用したカスタムログオンページです。ポリシーログオンビューとパスワードを忘れたビューがあります。ActiveViewIndexをと呼ばれる非表示フィールドに保存していますcurrentView
。
このプロジェクトでは、UpdatePanelで部分的なポストバックを使用していますが、JSは部分的なポストバックで更新されません。
そうは言っても、ActiveViewIndexがサーバー側で変更されるのを待つ方法が必要です。そうすればinit()
、それぞれのビューに対して関数を呼び出すことができます。これは可能ですか?
私のクライアントサイドコード:
グローバルJS
var page =
{
currentView : getContentElement( "currentView" ),
init : function ()
{
log( "initializing page" );
if ( this.currentView === "forgotpassword" ) { forgotPassword.init(); }
else { policyLogon.init(); }
}
};
page.init();
ポリシーログオンビューJS
var policyLogon =
{
panel : getContentElement( "pnlLogonInfo", "div" ),
submitButton : getContentElement( "btnLogon", this.panel ),
textInputs : $( "input[ type=text ]", this.panel ),
policyNumber : getContentElement( "txtPolicyNumber", this.textInputs ),
policyNumberError : getContentElement( "lblPolicyNumberError", this.panel ),
password : getContentElement( "txtPassword", this.textInputs ),
passwordError : getContentElement( "lblPasswordError", this.panel ),
forgotPasswordLink : getContentElement( "lbtnForgotPassword", this.panel ),
init : function ()
{
log( "initializing policy logon" );
var that = this;
// Other event handlers created here [redacted to keep example code short].
that.forgotPasswordLink.on("click", function ()
{
// Code to wait for PostBack should go here.
page.init();
});
that.policyNumber.focus();
}
};
パスワードを忘れたビューJS
var forgotPassword =
{
// Local vars, set up the same way as Policy Logon, just different elements.
// [redacted to keep example code short]
init : function ()
{
log( "initializing forgot password" );
var that = this;
// Other event handlers created here [redacted to keep example code short].
that.policyNumber.focus();
}
};
getContentElement()
質問とは何かに対する先制攻撃として、getContentElement()
ネストされたマスターページのために作成しなければならなかった関数であり、使用しているマスターページに基づいて要素を異なる方法で呼び出す必要があります。次のようになります。
function getContentElement ( id, context )
{
var publicPrefix = csMasterPrefix + csContentPrefix,
securePrefix = cpMasterPrefix + publicPrefix + cpContentPrefix,
publicId = "#" + publicPrefix + id,
secureId = "#" + securePrefix + id;
return ( context )
? ( isSecurePage ) ? $( secureId, context ) : $( publicId, context )
: ( isSecurePage ) ? $( secureId ) : $( publicId );
}