【问题标题】:How to trigger an asp.net function when the element was created in javascript?在javascript中创建元素时如何触发asp.net函数?
【发布时间】:2020-09-12 05:59:32
【问题描述】:

页面加载后,我调用一些 ajax 方法,例如在其中创建一些 html 元素

$.ajax({
       ...
       success: function (data) {
          ...
          var myCoolLink = $("<a/>").attr('id', 'xyz')
                            .attr('onclick', 'doStuff()')
                            .appendTo(someOtherElement);
       }
});

问题是,当单击 myCoolLink 时,我希望它在代码隐藏中触发 someFunction(带有一些参数),以便我可以检索数据以更新它旁边的网格。


可能的解决方案及其问题:

  1. 将其更改为 LinkBut​​ton 并添加 CommandArgument

CommandArgument 是服务器端属性,更改它对页面没有任何意义。

  1. 在 myCoolLink 中添加 __doPostBack()

好吧,它会回发,但由于我无法在我的链接中添加 runat="server" (与上述可能的解决方案相同的推理),除此之外它不会做太多


我想得越多,我就越相信这是不可能的。无论哪种方式,总是欢迎解决我的问题!期待您的回答(:

【问题讨论】:

  • 您可以将参数与 __doPostBack() 一起传递。如果您需要多个参数,可以将它们捆绑在一个 JSON 字符串中,如下所示:stackoverflow.com/questions/14482939/…
  • 或者,您可以使用从 JavaScript 调用的 WebMethod 并完全避免回发。
  • @Turnip 是的,我写它时没有争论,只是为了说明。但问题甚至不在于我需要多个参数,甚至不会调用该函数,因为链接上没有runat="server"
  • 您需要从代码隐藏中手动调用您的服务器端函数。将参数与 __doPostback() 一起传递,以便您识别事件。检查 PageLoad 中的参数并调用您的函数。这是一个简单的例子:stackoverflow.com/questions/3591634/how-to-use-dopostback
  • @Turnip 成功了!来自 PageLoad 的重定向是个好主意。非常感谢(:

标签: javascript asp.net ajax webforms postback


【解决方案1】:

您可以通过使用 ASP、NET Ajax PageMethods 来做到这一点

参考这个

https://www.c-sharpcorner.com/UploadFile/amit12345/call-pagemethod-from-jquery-ajax/

如果您可以使用 ajax 脚本管理器控件,那么这可以是一种方法。

https://www.aspsnippets.com/Articles/Calling-ASPNet-AJAX-PageMethods-using-ScriptManager-Example.aspx

在你的情况下从 doStuff() 调用它...

【讨论】:

  • 很好的解决方案,虽然在这种情况下我们仅限于静态方法,对吧?
  • 是静态方法。如果您需要维护某些状态,您可以在页面方法中使用 Cache 或 Session.... HttpContext.Current.Session 或 System.Web.HttpContext.Current.Cache
猜你喜欢
  • 1970-01-01
  • 2022-12-31
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
相关资源
最近更新 更多