我正在尝试从我的javascript代码手动调用ASP.NET(3.5)javascript回发函数__doPostBack
。问题是通常在<form>
标记(以及隐藏字段)开头之后呈现的回发脚本块偶尔会在结束</form>
标记附近呈现。
有没有办法强制它在表单标记的开头附近呈现?另外,ASP.NET如何确定何时/何处呈现回发客户端脚本块?
修改&gt;其他信息:
javascript代码驻留在引用__doPostBack
函数的用户控件中。控件本身不包含任何可以调用该函数的“回发控件”。 (当我提到'回发控件'时,我指的是调用__doPostBack
函数而不是asp.net ImageButton
和Button
控件的ASP.net控件)
基于我观察到的和@Brian关于回发脚本对页面上“回发控件”可用性的依赖性的评论,我发现当页面包含导致回发的控件时,__ doPostBack脚本块在开始<form>
标记之后呈现,如果没有,则将它们渲染到结束</form>
标记附近(或根据this它甚至不应该呈现)。现在,如果没有需要它的控件,ASP.NET不会渲染回发脚本是有意义的,但是在结束标记附近的脚本的明显位置仍然是我不知道的。我无法找到任何表明此行为的文档。我能找到的只有this。
话虽如此,我已经找到了几个解决这个问题的方法:
<asp:LinkButton ID="RequirePostBackScriptLink" runat="server" style="display:none;" />
(这就是我正在使用的)Page.RegisterRequiresPostBack
并实施IPostBackDataHandler
界面。最后,正如@Jonathan_Bates在帖子中提到的,正确的做法是将__doPostBack
的引用包含在作为load
(或ready
的事件处理程序的函数中。如果你正在使用jquery)。这样,就不需要依赖__doPostBack
脚本的实际位置。
如果有人能提供有关上述行为的更多信息,那就太棒了。
答案 0 :(得分:2)
我猜测它渲染的位置对你来说很重要,这样你的脚本就可以在它之后渲染并且可以调用它(这让我先说,开始时是一个坏主意)。
您只需要确保用于调用__doPostBack
的任何脚本在读入浏览器后调用它。如果你使用像jQuery这样的库及其$(document).ready()
约定,你可以确保在加载所有其他代码之前你的代码不会执行,因此你的代码可以调用__doPostBack
。 / p>
答案 1 :(得分:0)
其中一些由呈现的控件控制,而页面在预定义的点注入客户端脚本块和启动脚本...
我认为这是一个控件或什么?这不适用于标准块?