Javascript 从jquery添加的html控件触发asp.net事件
在我的Web应用程序中,我有一些这样的代码Javascript 从jquery添加的html控件触发asp.net事件,javascript,c#,jquery,html,asp.net,Javascript,C#,Jquery,Html,Asp.net,在我的Web应用程序中,我有一些这样的代码 $('.form-content').append('<ul>' + '<li runat="server" OnClick="SelectUser" value="1">User 1</li>' + '<li runat="server" OnClick="SelectUser" value="2">User 2</li>' + '<li runat="ser
$('.form-content').append('<ul>' +
'<li runat="server" OnClick="SelectUser" value="1">User 1</li>' +
'<li runat="server" OnClick="SelectUser" value="2">User 2</li>' +
'<li runat="server" OnClick="SelectUser" value="3">User 3</li>' +
'</ul>');
但是,当我选择列表项时,事件不会触发。
有没有办法将ASP.NET事件绑定到由JQuery/Javascript动态生成的html控件
我尝试使用WebMethod。但是,它无法更新ASP.Net控件,因为该方法是静态的 如果所有其他操作都失败,您可以尝试此操作,在页面上添加隐藏的asp:按钮,并确保已附加onclick事件
<asp:Button ID="btnSelectUser" runat="server" Text="" OnClick="btnSelectUser_OnClick" />
这将触发服务器端事件
您需要记住的另一件事是,您需要在页面上放置隐藏标签以保存li的选定值
那么这些值也应该在服务器上可用
这就是为什么要这样做的最好方法,但它会起作用。我已经做了一个类似于您的要求
$(document).ready(function () {
$("#btnSubmit").on("click", function () {
debugger
addList();
return false;
});
function addList() {
$('.form-content').append('<ul>' +
'<li runat="server" value="1">User 1</li>' +
'<li runat="server" value="2">User 2</li>' +
'<li runat="server" value="3">User 3</li>' +
'</ul>');
}
$(".form-content").on("click", "li", function () {
SelectUser($(this));
});
function SelectUser(obj) {
alert("User Selected!");
$.ajax({
type: "POST",
url: "./YourPage.aspx/SelectUser",
data: ("ID=" + $(obj).prop("id")),
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
},
success: function (result) {
alert("success");
}
});
return false;
}
});
您可以在SelectUser中执行任何操作。甚至可以调用服务器端事件。您可以尝试使用WebMethod并从$.ajax调用该WebMethod,显然,任何HTML控件都可以调用$.ajax告诉我一件事!SelectUser是服务器端的一个方法??是。。。这是一种服务器方法。WebMethod对我没有帮助,因为我有很多文本框和网格视图要用这个函数填充。我无法通过JQuery AJAX post结果逐个设置。同一页面上的WebMethod不允许我直接访问控件;谢谢,,,我会尝试一下,并发表评论。嗨,它的工作。。。我仍然在寻找更好的解决办法。感谢您提供的解决方案:您可以从ajax调用服务器端的SelectUser。我已经更新了密码。是的。使用ASP.NET WebMethod是可能的。但这里的问题是:由于WebMethod是静态的,它无法访问我页面上的任何控件。因此这没用。。。如果我使用ajax结果填充数据,这对我来说是一项繁重的任务。
$("li").click(function () {
$("#hiddenLabel").val("Get value from attr")
$("#btnSelectUser").trigger("click")
});
$(document).ready(function () {
$("#btnSubmit").on("click", function () {
debugger
addList();
return false;
});
function addList() {
$('.form-content').append('<ul>' +
'<li runat="server" value="1">User 1</li>' +
'<li runat="server" value="2">User 2</li>' +
'<li runat="server" value="3">User 3</li>' +
'</ul>');
}
$(".form-content").on("click", "li", function () {
SelectUser($(this));
});
function SelectUser(obj) {
alert("User Selected!");
$.ajax({
type: "POST",
url: "./YourPage.aspx/SelectUser",
data: ("ID=" + $(obj).prop("id")),
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
},
success: function (result) {
alert("success");
}
});
return false;
}
});