【问题标题】:doesn't work button in asp:updatepanelasp:updatepanel 中的按钮不起作用
【发布时间】:2025-12-28 19:00:07
【问题描述】:

我在 html 中有这段代码。 Answer_P 中的所有按钮都不起作用,但对于另一个项目,相同的代码可以正常工作。我现在不知道为什么。 很感谢任何形式的帮助。 当我调试并单击 Cancel_btn 时没有任何事件或请求。 不要运行 Cancel_btn_Click 函数

    <asp:UpdatePanel runat="server" ID="U" UpdateMode="Conditional">
    <ContentTemplate>
        <div class="Div" style="box-shadow: 3px 2px 24px #000000">
            <asp:Panel runat="server" ID="Show_P">
                <div style="min-width: 300px; margin: 0px auto; text-align: center">
                    <div style="padding-top: 10px">
                        <table>
                            <tr>
                                <asp:GridView runat="server" ID="GRD" DataKeyNames="ID" AutoGenerateColumns="false" OnRowCommand="OnRowCommend_Click">
                                    <Columns>
                                        <asp:BoundField HeaderText="نام" DataField="Name" />
                                        <asp:BoundField HeaderText="ایمیل" DataField="Email" />
                                        <asp:BoundField HeaderText="موضوع" DataField="Subject" />
                                        <asp:BoundField HeaderText="متن" DataField="Text" />
                                        <asp:BoundField HeaderText="پاسخ" DataField="Answer" />
                                        <asp:ButtonField ButtonType="Image" ImageUrl="../Image/Comment.png" CommandName="Answer" Text="پاسخ دادن" HeaderText="پاسخ دادن" />
                                    </Columns>
                                </asp:GridView>
                            </tr>
                        </table>
            </asp:Panel>
            <asp:Panel runat="server" ID="Answer_P">
                <table>
                    <tr>
                        <td>نام</td>
                        <td>
                            <asp:TextBox runat="server" ID="Name_txt" CssClass="Txt-class"></asp:TextBox></td>
                    </tr>
                    <tr>
                        <td>ایمیل</td>
                        <td>
                            <asp:TextBox runat="server" ID="Email_txt" CssClass="Txt-class"></asp:TextBox></td>
                    </tr>
                    <tr>
                        <td>موضوع</td>
                        <td>
                            <asp:TextBox runat="server" ID="Subject_txt" CssClass="Txt-class"></asp:TextBox></td>
                    </tr>
                    <tr>
                        <td>متن</td>
                        <td>
                            <uc1:CK_Editor runat="server" ID="Text_CK" />
                        </td>
                    </tr>
                    <tr>
                        <td>پاسخ</td>
                        <td>
                            <uc1:CK_Editor runat="server" ID="Answer_CK" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Button runat="server" ID="Answer_btn" Text="پاسخ" CommandName="Answer" CssClass="btn-blue" /></td>
                        <td>
                            <asp:Button runat="server" ID="Cancel_btn" Text="لغو" CommandName="Cancel" CssClass="btn-blue" OnClick="Cancel_btn_Click" /></td>
                    </tr>
                </table>
            </asp:Panel>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

【问题讨论】:

  • 您是否尝试在 UpdatePanel 中添加属性 ChildrenAsTriggers="true"?并将按钮添加为 ?
  • 是的,我正在尝试,但不起作用

标签: asp.net


【解决方案1】:

在页面加载事件中添加此代码

using AjaxControlToolkit;

并添加ToolScriptManager 而不是ScriptManager

编辑

Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server."

当您在多个更新面板中将控件注册为 AsyncPostbackTrigger 时,有时会出现此问题。

如果这不是问题,请尝试在脚本管理器声明之后添加以下内容:

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args){
        if (args.get_error() != undefined){
            args.set_errorHandled(true);
        }
    }
</script>

这里讨论了更多的解决方案:http://forums.asp.net/t/1066976.aspx/9/10

【讨论】:

  • 我正在尝试将此代码用于另一个项目并工作,但此项目不起作用,并且在 chrom 中看到此错误 Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred在处理服务器上的请求时。服务器返回的状态码是:500
  • 我试试这个,但不行。
【解决方案2】:

如果你想让你的按钮工作,你必须使用触发器 试试:

<asp:UpdatePanel runat="server" ID="U" UpdateMode="Conditional">
<ContentTemplate>
.....
 </ContentTemplate>
  <Triggers >
    <asp:AsyncPostBackTrigger ControlID="Answer_btn" EventName="Click" />
    <asp:AsyncPostBackTrigger ControlID="Cancel_btn" EventName="Click" />
</Triggers>
</asp:UpdatePanel>

如果您的按钮无法在页面顶部使用,请使用 EnableEventValidation="false"

<%@ Page Title="" Language="C#" ...  EnableEventValidation="false" ....

【讨论】:

  • 你用过&lt;asp:ScriptManager ID="ScriptManager1" runat="server"&gt; &lt;/asp:ScriptManager&gt;吗?
【解决方案3】:

似乎在按钮定义中添加 UseSubmitBehavior="false" 已经解决了 我的问题。您也可以将取消按钮与 AsyncPostBackTrigger 绑定为..

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="Cancel_btn" /> 
</Triggers>

【讨论】:

    【解决方案4】:

    我通过 web.config 中的这段代码解决了这个问题

    <pages validateRequest="false">
    

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题。只需将其添加到您的页眉:

      <meta http-equiv="X-UA-Compatible" content="IE=9" />
      

      在这个帖子上查看我的答案:

      https://*.com/a/33156665/1821637

      【讨论】:

        最近更新 更多