【发布时间】: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(带有一些参数),以便我可以检索数据以更新它旁边的网格。
可能的解决方案及其问题:
- 将其更改为 LinkButton 并添加 CommandArgument
CommandArgument 是服务器端属性,更改它对页面没有任何意义。
- 在 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