Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jquery添加的html控件触发asp.net事件_Javascript_C#_Jquery_Html_Asp.net - Fatal编程技术网

Javascript 从jquery添加的html控件触发asp.net事件

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

在我的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="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;
}
});