ASP Webform中JS按SweetAlert响应调用服务端函数不生效如何解决
问题原因
核心是ASP.NET WebForm的服务端控件默认渲染到前端时,会自动给ID拼接父容器(如ContentPlaceHolder、用户控件等)的前缀,你代码里直接用document.getElementById("DelUser")无法匹配到前端实际生成的DOM元素ID,所以点击确认后找不到按钮触发点击事件。
解决方法
方法1(推荐):固定控件客户端ID
给隐藏的服务端按钮添加ClientIDMode="Static"属性,强制控件渲染到前端的ID和你定义的ID完全一致,修改HTML代码如下:
<asp:Button runat="server" ID="DelUser" Text="确认删除" style="display:none;" OnClick="DeleteEvent" ClientIDMode="Static"/> <asp:Button ID="DeleteUser" runat="server" Text="Delete User" Width="122px" BackColor="#FF572D" Font-Bold="True" OnClick="DeleteUser_Click" />
方法2:动态获取控件客户端ID
如果不想固定ID,直接修改JS中获取按钮的代码,用服务端标签输出控件的实际客户端ID即可:
if (willDelete) { document.getElementById("<%= DelUser.ClientID %>").click(); }
注意:该写法需要JS代码写在.aspx页面内,不能放在独立的.js文件中,否则服务端标签无法被解析。
验证方式
修改完成后打开浏览器F12开发者工具,切换到控制台面板,触发SweetAlert点击确认后看是否有报错,如果没有报错就能正常触发DeleteEvent服务端事件。
内容的提问来源于stack exchange,提问作者FH337
相关产品推荐
相关产品推荐

