Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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
使用jQuery查找未选中的复选框,并将名称传递给C#代码_C#_Jquery_Asp.net - Fatal编程技术网

使用jQuery查找未选中的复选框,并将名称传递给C#代码

使用jQuery查找未选中的复选框,并将名称传递给C#代码,c#,jquery,asp.net,C#,Jquery,Asp.net,这是我的代码: public class MyCollection { internal static Dictionary<string, CheckBox> MyCheckBox = new Dictionary<string, CheckBox>(); } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) {

这是我的代码:

public class MyCollection {
        internal static Dictionary<string, CheckBox> MyCheckBox = new Dictionary<string, CheckBox>();
    }


    protected void Page_Load(object sender, EventArgs e) {

        if (!IsPostBack) {
            CheckBox chk1 = new CheckBox();
            chk1.ID = "chk1";
            chk1.Checked = true;
            if (!MyCollection.MyCheckBox.ContainsKey(chk1.ID))
                MyCollection.MyCheckBox.Add(chk1.ID, chk1);

            CheckBox chk2 = new CheckBox();
            chk2.ID = "chk2";
            chk2.Checked = true;
            if (!MyCollection.MyCheckBox.ContainsKey(chk2.ID))
                MyCollection.MyCheckBox.Add(chk2.ID, chk2);

            pl1.Controls.Add(chk1);
            pl2.Controls.Add(chk2);
        }
    }

    protected void btn1Click(object sender, EventArgs e) {
        lit1.Text = "Chk1.Checked: " + MyCollection.MyCheckBox["chk1"].Checked.ToString();
        lit1.Text += "<br />Chk2.Checked: " + MyCollection.MyCheckBox["chk2"].Checked.ToString();
    }

但是这段代码只是在控制台上写sList如何在C代码中检索sList值?

请记住一些简单的事情:您必须在每次回发上添加动态控件。这将节省大量时间。

请记住一些简单的事情:您必须在每次回发中添加动态控件。这将节省您大量的时间。

首先,您应该不要在静态成员中存储控件实例,例如
复选框,因为这会导致应用程序内存泄漏。ASP.NET
控件
类持有对其包含的
页面的引用
,因此通过将
控件
添加到静态集合中,可以防止整个
页面
实例及其所有子
控件
被垃圾收集

其次,在你的情况下这样做是没有意义的,因为它不会实现你想要做的。添加到
字典
中的
复选框
类的实例将与您希望在后续请求中与之交互的实例不同;您存储在
字典中的实例仅用于该请求,这就是为什么
复选框
实例总是从其
选中的
属性返回
true

我认为JQuery与此无关,因为这无助于您在服务器上重新构建
复选框
控件。您需要做的是在每次请求时将
复选框
控件添加到
页面
。为了使
复选框
控件从
表单
集合加载其状态,您需要在
页面
生命周期中尽早添加
控件:我建议尝试在
页面.Init
事件期间添加它们

public void Page_Init(object sender, EventArgs e)
{
   CheckBox chk1 = new CheckBox();
   chk1.ID = "Chk1";

   CheckBox chk2 = new CheckBox();
   ck2.ID = "Chk2";

   if(!IsPostBack)
   {
      ck1.Checked = true;
      ck2.Checked = true;
   }

   p1.Controls.Add(chk1);
   p2.Controls.Add(chk2);
}
如果没有实际的代码,就很难理解您要做什么以及如何进行。但是,事实仍然是,如果您不在每次请求时将复选框控件添加到页面中,则它们无法参与页面生命周期,并且在提交页面时不会从表单集合中加载它们的状态。在我看来,您似乎想要在服务器上操作页面的控制树,但这需要在每个请求上重新构建,并且仅在处理请求期间存在。将页面呈现给客户端后,控件树不再存在


因此,您可以使用JavaScript将HTML输入复选框的值发布到服务器,但是您会将它们发送到哪里,以及您希望发生什么?您似乎在反对ASP.NET Webforms的做法,这种做法围绕着回发邮件和服务器上处理请求的页面对象展开。

首先,您应该永远不要在静态成员中存储控件实例,例如
复选框
,因为这会导致应用程序内存泄漏。ASP.NET
控件
类持有对其包含的
页面的引用
,因此通过将
控件
添加到静态集合中,可以防止整个
页面
实例及其所有子
控件
被垃圾收集

其次,在你的情况下这样做是没有意义的,因为它不会实现你想要做的。添加到
字典
中的
复选框
类的实例将与您希望在后续请求中与之交互的实例不同;您存储在
字典中的实例仅用于该请求,这就是为什么
复选框
实例总是从其
选中的
属性返回
true

我认为JQuery与此无关,因为这无助于您在服务器上重新构建
复选框
控件。您需要做的是在每次请求时将
复选框
控件添加到
页面
。为了使
复选框
控件从
表单
集合加载其状态,您需要在
页面
生命周期中尽早添加
控件:我建议尝试在
页面.Init
事件期间添加它们

public void Page_Init(object sender, EventArgs e)
{
   CheckBox chk1 = new CheckBox();
   chk1.ID = "Chk1";

   CheckBox chk2 = new CheckBox();
   ck2.ID = "Chk2";

   if(!IsPostBack)
   {
      ck1.Checked = true;
      ck2.Checked = true;
   }

   p1.Controls.Add(chk1);
   p2.Controls.Add(chk2);
}
如果没有实际的代码,就很难理解您要做什么以及如何进行。但是,事实仍然是,如果您不在每次请求时将复选框控件添加到页面中,则它们无法参与页面生命周期,并且在提交页面时不会从表单集合中加载它们的状态。在我看来,您似乎想要在服务器上操作页面的控制树,但这需要在每个请求上重新构建,并且仅在处理请求期间存在。将页面呈现给客户端后,控件树不再存在


因此,您可以使用JavaScript将HTML输入复选框的值发布到服务器,但是您会将它们发送到哪里,以及您希望发生什么?您似乎正在与ASP.NET Webforms的做法作斗争,这种做法围绕回发邮件和服务器上处理请求的页面对象展开。

使用此方法可能有用这是您所需的全部测试,并让我知道结果:


使用这一个可能有用这是您所需的全部测试它并让我知道结果:


感谢静态成员,但实际上我认为我不能在页面中添加控件,因为我上面的代码只是一个示例,而实际项目是一个用户控件,它可以从一个类型动态定义和呈现控件,嗯,场景是这样的:客户端添加用户控件的集合