ASP.NET __doPostBack在表单标记的开始或结尾之后呈现

key*_*zay 5 javascript asp.net postback webforms

我正在尝试__doPostBack从我的javascript代码手动调用ASP.NET(3.5)javascript回发函数.问题是通常在<form>标记开始之后(以及隐藏字段)呈现的回发脚本块有时会在结束</form>标记附近呈现.

有没有办法强制它在表单标记的开头附近呈现?另外,ASP.NET如何确定何时/何地呈现回发客户端脚本块?

编辑>附加信息: javascript代码驻留在引用该__doPostBack功能的用户控件中.控件本身不包含任何可以调用该函数的"回发控件".(当我提到'回发控件'时,我指的是调用__doPostBack函数而不是asp.net ImageButtonButton控件的ASP.net 控件)

基于我观察到的和@Brian关于回发脚本对页面上"回发控件"可用性的依赖性的评论,我发现当页面包含导致回发的控件时,会回显__doPostBack脚本块开场后<form>的标签,当没有,这使得他们在结束不久的</form>标签(或根据这个它甚至不应该被渲染).现在,如果没有需要它的控件,ASP.NET不会渲染回发脚本是有意义的,但是在结束标记附近的脚本的明显位置仍然是我不知道的.我无法找到任何表明此行为的文档.我能找到的就是这个.

话虽如此,我已经找到了几个解决这个问题的方法:

  1. 添加"回发控件"并通过css(而不是Visible属性)将其可见性设置为隐藏.例如.<asp:LinkButton ID="RequirePostBackScriptLink" runat="server" style="display:none;" />(这就是我正在使用的)
  2. 将控件添加到Page.RegisterRequiresPostBack并实现IPostBackDataHandler接口.

最后,正如@Jonathan_Bates在他的帖子中提到的,正确的做法是将引用包装__doPostBack在一个函数内部,该函数是一个事件处理程序load(或者ready如果你使用的是jquery).这样,就不需要依赖__doPostBack脚本的实际位置.

如果有人能提供有关上述行为的更多信息,那就太棒了.

Bri*_*ins 0

其中一些是由呈现的控件控制的,而页面在预定义的点注入客户端脚本块和启动脚本......

我认为这是为了控制或其他什么?这不是标准块吗?