Я работаю в ASP.NET 3.5 с VB.NET в качестве моего серверного языка.Я использую JavaScript через jQuery 1.5.2 в качестве моего клиентского языка.Я пытаюсь выполнить настройку прототипа / пространства имен на этой странице.Эта страница является пользовательской страницей входа с использованием MultiView.У меня есть вид входа в систему и вид забытого пароля.Я храню ActiveViewIndex в скрытом поле с именем currentView
.
РЕДАКТИРОВАТЬ: я забыл упомянуть, что я использую частичные обратные передачи с UpdatePanel в этом проекте, и JS не получаетобновлен в Partial PostBacks.
Тем не менее, мне нужен способ подождать, пока ActiveViewIndex будет изменен на стороне сервера, чтобы я мог вызвать функцию init()
для соответствующего представления.Возможно ли это?
Если вы хотите взглянуть на мой код на стороне клиента, вот оно, но имейте в виду, что я очень плохо знаком со всем, что касается прототипа / пространства имен, так что не обращайте на меня внимания, если это не так.t правильно или может быть оптимизировано:
Global JS
var page =
{
currentView : getContentElement( "currentView" ),
init : function ()
{
log( "initializing page" );
if ( this.currentView === "forgotpassword" ) { forgotPassword.init(); }
else { policyLogon.init(); }
}
};
page.init();
Policy Logon View 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 );
}