2009-05-29 4 views
14

Мне нужно вставить немного Javascript в процесс при отправке веб-формы, но после проверки на стороне клиента.RegisterOnSubmitStatement после проверки на стороне клиента

RegisterOnSubmitStatement, похоже, помещает javascript перед проверкой.

Кто-нибудь знает, как это сделать после?

Решение было найдено: В веб-управления, я ставлю что-то вроде этого:

protected override OnInit(EventArgs e) { 
    Page.SaveStateComplete += new EventHandler(RegisterSaveStuff); 
    base.OnInit(e); 
} 

void RegisterSaveStuff(object sender, EventArgs e) { 
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "name", "JS code here"); 
} 
+0

К сожалению оживить зомби, но я думаю, что это немного меньше Hacky использовать событие PreRenderComplete. –

ответ

5

После некоторых исследований в Интернете и играть с ним, я понял, что вы можете сделать это, зацепив в Пейджа SaveStateComplete мероприятие. Я предполагаю, что заявление о представлении подтверждения регистрируется во время события PreRender, поэтому, если вы зарегистрируете его после этого (в событии SaveStateComplete), вы можете получить его позже.

Вам нужно перерегистрировать его, но это не имеет большого значения, потому что я не полагаюсь на ViewState для моего JS.

+2

Это отлично. Пожалуйста, разместите код. – ichiban

+0

Решение добавлено к вопросу для удобства чтения – Jared

8

, что правильно, RegisterOnSubmitStatement НЕ РАБОТАЕТ в функции init. Его следует вызывать после на странице lige cycle. я вещь правильное место для этого есть:

«PreRenderComplete»

protected override OnInit(EventArgs e) 
{ 
    Page.PreRenderComplete+= new EventHandler(Page_PreRenderComplete); 
    base.OnInit(e); 
} 

void Page_PreRenderComplete(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "name", "JS code here"); 
} 
Смежные вопросы