我有一个ASP.NET页面与两个相同的Web用户控件实例(一个简单的所见即所得的编辑器)。提交后,WUC会做一些JavaScript魔术,然后继续正常的回发。ASP.NET - 如何注册多个JavaScript调用以在PostBack上运行?
第一个实例似乎正在工作,但第二个实例未能将更改发回到服务器(它会恢复到原始状态,并发布该更改)。我相信问题在于JS只为第一个WUC发火。我追踪,为下面的代码,从生成的客户端源:
function WebForm_OnSubmit() {
prepHtml('AddEditPopup1_ctlEditorQuestion_txtEdit','AddEditPopup1_ctlEditorQuestion_divEdit', 'AddEditPopup1_ctlEditorQuestion_divHT');
//snip...
}
的问题似乎是,应该有调用prepHtml
:一个用于世维会的ctlEditorQuestion
情况下,另一个用于ctlEditorAnswer
实例。
取而代之的是ctlEditorQuestion
只有一个。两个控件都注册OnSubmit事件,但其中一个覆盖另一个。
的prepHtml
呼叫从WUCS' C#代码在运行时注册:
//Page_Load
_onSubmit = String.Format("prepHtml('{0}','{1}', '{2}');",
txtEdit.ClientID, divEdit.ClientID, divHT.ClientID);
//OnPreRender
Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "get-html", _onSubmit);
我要指出,我没有写这个控制自己,我从来没有见过这样的运行登记的之前的OnSubmit JS代码。 Page.ClientScript.RegisterOnSubmitStatement
对我来说是全新的。
我需要注册两个prepHtml
调用,以便它们按顺序运行。这可能吗?我愿意替代Page.ClientScript.RegisterOnSubmitStatement
,只要代码仍然在提交时被解雇。
@Chris Gessler:`prepHtml`将innerHTML从可编辑div复制到textarea,然后发回。问题是只有一次调用`prepHtml`时,应该有两个。第二个代码块是应该在那里的,但事实并非如此。 – 2011-02-10 01:04:01