【问题标题】:Forcing ASP.NET WebForms to render __doPostback() scripts强制 ASP.NET WebForms 呈现 __doPostback() 脚本
【发布时间】:2011-03-23 03:28:43
【问题描述】:

我们的一个 ASP.NET WebForms 3.5 页面突然决定不再呈现 __doPostBack() javascript 方法以及支持的 <hidden> 字段。

页面上的其他一切似乎都正常 - 我唯一更改的是我删除了 SelectList 控件上的回发处理程序,并将同一控件上的 AutoPostbackTrue 更改为 False。页面上还有几个其他(未更改的)元素具有回发处理程序。

我也在页面上使用了 jQuery 验证,但它之前就像一个魅力,而且我没有更改 javascripts 中的任何内容。是的,我见过this question,但该解决方案不适用于我——我们目前根本没有使用任何缓存。

更新:
似乎 ASP.NET 决定不需要我的客户端脚本,因为没有控件是 depending on postback。但是,我有一个用于提交的按钮控件,它在服务器端有一个事件处理程序,并且从不调用该事件处理程序 - 我怀疑这是因为该按钮被允许只是一个常规的 <input type="submit"> 并提交表单标准 HTTP 方式,而不是使用 ASP.NET __doPostBack 脚本。

这是我的控件(在代码隐藏中可见设置为True):

<asp:Button ID="SaveNewButton" runat="server" CssClass="inputbutton"
    Visible="false" OnClick="SaveNewButton_Click" />

这是代码隐藏中的处理程序方法:

Protected Sub SaveNewButton_Click(ByVal sender As Object,
    ByVal e As System.EventArgs) Handles SaveNewButton.Click

如何强制 ASP.NET 为回发呈现客户端脚本,以便调用我的事件处理程序?

【问题讨论】:

    标签: asp.net webforms postback rendering


    【解决方案1】:

    你的

    标签还有 runat="server" 属性吗?

    【讨论】:

    • 是的,页面上的所有其他服务器控件也是如此。
    【解决方案2】:

    IIRC,ASP.NET 仅在认为需要时才呈现 __doPostback() javascript,也就是说,如果页面上有控件需要触发回发,而它们呈现的 HTML 控件本身并不这样做。按钮可以通过常规的非脚本提交触发回发,因此您的下拉菜单可能是唯一需要脚本回发的控件。当您将其 autopostback 属性更改为 false 时,您可能不再需要 __doPostback,因此 ASP.NET 不再呈现它。

    【讨论】:

    • 这似乎是合理的。有没有办法强制 ASP.NET 呈现脚本?
    • @Stan 下面的答案包括一种强制渲染脚本的方法。
    【解决方案3】:

    问题是,正如 tdammers 所指出的,ASP.NET 仅在它认为需要时才呈现 __doPostback() javascript,而在这种情况下它并不这么认为。解决方案是在a thread at forums.asp.net 给我的,就这么简单:

    在应该使用__doPostBack() 提交的按钮上设置UseSubmitBehavior="False",而不是使用浏览器的默认提交行为。

    【讨论】:

      【解决方案4】:

      如果您通过 Google 找到此内容,问题是 __doPostBack 仅在需要时才包含在内。如果您没有任何控件会导致 ASP.NET 自动包含脚本,则可以调用

              page.ClientScript.GetPostBackEventReference(New Web.UI.PostBackOptions(Me.page))
      

      ASP.NET 将包含回发脚本。很简单。

      您可以在 PreRender 事件处理程序中执行此操作。

      参考http://forums.asp.net/t/1584561.aspx?Forcing+ASP+NET+to+render+__doPostBack+scripts

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 2017-09-27
        相关资源
        最近更新 更多