客户端验证后的RegisterOnSubmitStatement

Jar*_*red 14 javascript asp.net ajax

当提交Web表单时,我需要在流程中插入一些Javascript,但是在客户端验证发生之后.

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"); 
} 
Run Code Online (Sandbox Code Playgroud)

小智 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"); 
}
Run Code Online (Sandbox Code Playgroud)


Jar*_*red 5

在网上进行了一些研究并玩弄它之后,我发现你可以通过挂钩到Page的SaveStateComplete事件来做到这一点.我想验证提交语句是在PreRender事件期间注册的,所以如果你在之后注册它(在SaveStateComplete事件中),你可以在之后得到它.

你必须重新注册它,但这不是什么大问题,因为我不依赖于我的JS的ViewState.