访问代码隐藏中动态创建的 html 复选框

Accessing dynamic created html checkboxes in code behind

本文关键字:html 复选框 创建 动态 代码 隐藏 访问      更新时间:2023-09-26

我在运行时使用javascript/jquery动态创建我的html复选框,就像这样。它使用的是Jquery引导网格。

 isAssigned: function (column, row) {
                    if (row.isAssigned == "True" || row.isAssigned == "true") {
                        return "<input id='chk" + row.id + "' type='checkbox' name='chkMarks' checked='" + row.isAssigned + "' />";
                    }
                    else {
                        return "<input id='chk" + row.id + "' type='checkbox' name='chkMarks'/>";
                    }
                }

我需要做的是以某种方式获取 aspx.cs 代码隐藏中的提交按钮单击事件中的值。我无法runat="server"这些控件,因为直到页面加载后才添加id。我需要获取 ID 以及它们是真的还是假的。

我想知道是否有人知道在这样的事情中获得这些价值观的最佳方法。

    protected void myTester_Click(object sender, EventArgs e)
    {
        var values = Request["chkMarks"].ToString();
    }

你差点就吃了! 您需要使用 Request.Form 而不仅仅是 Request。 这应该可以让您访问所有 DOM 元素。

var values = Request.Form["chkMarks"].ToString();

以下是有关它的更多信息:https://msdn.microsoft.com/en-us/library/system.web.httprequest.form(v=vs.110).aspx

Request.Unvalidated["chkMarks"]

根据此字段的值,也可能很有用。

我最终使用JSON使用回发完成了此操作,因此不是异步的,希望对某人有用。

   function BuildJSON() {
        var jsonObj = [];
        jQuery("input[name='chkMarks']").each(function () {
            item = {}
            item["id"] = this.id;
            item["isAssigned"] = this.checked;
            jsonObj.push(item);
        });
        var json = JSON.stringify(jsonObj);
        $('#<%= hiddenMarksID.ClientID %>').val(json);
     }

在后面的代码中,我将一个事件附加到按钮并像这样拿起 JSON......

  protected void btnSubmitMarks_Click(object sender, EventArgs e)
    {
        string json = hiddenMarksID.Value;
        List<ChkMark> chkMark = new JavaScriptSerializer().Deserialize<List<ChkMark>>(json);

这是POCO...

 public class ChkMark
{
    public string id { get; set; }
    public bool isAssigned { get; set; }
}