2009-05-29 95 views
14

当Web窗体被提交时,但在客户端验证发生后,我需要插入一点Javascript到流程中。客户端验证后的RegisterOnSubmitStatement

RegisterOnSubmitStatement似乎在验证前放置了javascript。

任何人都知道如何让它渲染后?

发现的解决方案: 在Web控制,我把这样的事情:

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

对不起复活僵尸,但我认为这是略少哈克使用PreRenderComplete事件。 – 2011-03-07 11:42:38

回答

5

经过一番研究,在线玩了,我想通了,你能做到这一点挂接到页面的SaveStateComplete事件。我猜测验证提交语句是在PreRender事件期间注册的,所以如果你在之后注册它(在SaveStateComplete事件中),你可以在之后得到它。

你不得不重新注册它,但这不是什么大问题,因为我不依赖ViewState来处理我的JS。

+2

非常好。请张贴一些代码。 – ichiban 2009-06-01 18:54:42

8

没错,RegisterOnSubmitStatement在init函数中不起作用。 它应该在页面lige循环中调用。 我的东西在正确的地方为此是:

“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"); 
}