繁体   English   中英

客户端用户确认后调用ASPX服务器端函数吗?

[英]ASPX server-side function call after client-side user confirmation?

也许我在搜索错误的关键字,但找不到解决方案。

我有一个ASPX页面,在该页面上的<asp:Repeater>我想插入一个按钮(每个项目),该按钮将:

  1. 询问(JS“确认”)用户是否真的要继续,然后
  2. 调用页面类上的方法,从该项目传入ID(Guid)。

我可以做1或2,但无法弄清楚如何从JavaScript回调到page方法。

我曾尝试在ScriptManager中打开EnablePageMethods,但这似乎并没有达到我的预期-调用PageMethods.Blah(...)似乎没有任何效果。

有没有现成的例子? 实际上,每个条目的确认字符串都是相同的。

您可以使用按钮的OnClientClick属性执行确认:

<asp:Button runat="server" ID="DeleteButton" CommandName="Delete"
 Text="Delete" OnClientClick="return confirm('Are you sure ?');" />

这是您需要做的:

  1. 确保您的按钮具有runat =“ server”
  2. 在该按钮中,添加onClientClick =“ javascript:return Confirm('确定吗?');”
  3. 从onClick甚至从按钮调用您的服务器端代码

     <asp:Button id="Button1" Text="Do Stuff" OnClick="YOUR SERVER SIDE METHOD" onClientClick="javascript: return confirm('Are you sure?');" runat="server"/> 
<asp:Repeater ID="YourRepeater" runat="server">
    <ItemTemplate>
        <asp:Button ID="btnDelete" runat="server" OnClientClick="javascript:return confirm('Are you sure ?');" OnClick="btnDelete_OnClick" />
    </ItemTemplate>
</asp:Repeater>

这是您需要做的:

  1. 启用脚本管理器(您所做的)

  2. 创建一个Web服务,该服务将处理代码的回调:

     [WebService] [ScriptService] public class MyWebService : System.Web.Services.WebService { [WebMethod] public int SomeCallbackFunction() { .... } } 
  3. 将指向Web服务代理的链接放入脚本管理器(由[ScriptService]生成):

     <asp:ScriptManager runat="server" ID="scriptManagerId"> <Services> <asp:ServiceReference Path="WebService.asmx" /> </Services> </asp:ScriptManager> 
  4. 在您的JavaScript中,您将能够使用回调:

     function Blablabla() { MyWebService.SomeCallbackFunction() } 

这只是一个大致的想法,当然,此代码可能需要一些改进。 您可以在此处查找更多示例。

最终,我决定在客户端进行此操作。 我省略了OnClick,但将onclientclick属性设置为一个函数,该函数进行确认,然后使用add参数重定向到该页面,该参数是所讨论的表行的ID。

为什么? 好吧,我的数据源是一个由几个表创建的只读列表,因此(IIUC)它是在处理按钮单击之前创建的。 因此,页面刷新后没有用户刚刚添加的数据。

相反,** add = *** ID *参数会导致添加,成功(或错误)消息并突出显示新插入的行。 不利的一面当然是用户是否要刷新页面,但是在这种情况下,它位于IFRAME中,因此我认为不太可能。

那谢谢啦。 您回答了我的问题,我只是没有意识到我的问题并不是针对我想去的地方。

顺便说一句,我让他们在数据库中添加一行。 进行确认的原因是,它在服务器上最多需要一个小时的处理时间!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM