如何在网格视图中添加多个复选框值

时间:2020-01-24 06:56:23

标签: c# html asp.net-mvc

  1. 这是我的创建视图,使用输入类型=复选框,但是我无法选择多个值

    py -m pip install numpy --users
  2. 这是我的模型类,我使用SP来添加数据,并且尝试添加多个复选框值

    <div class="form-group">
                @Html.LabelFor(model => model.Hobby, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    <span>WRITING</span><input type="checkbox" groupname="Hobby" name="Hobby" value="WRITING" />
                    <span>DANCING</span><input type="checkbox" groupname="Hobby" name="Hobby" value="DANCING" />
                    <span>COADING</span><input type="checkbox" groupname="Hobby" name="Hobby" value="COADING" />
                    <span>SINGING</span><input type="checkbox" groupname="Hobby" name="Hobby" value="SINGING" />
                    @*<span>DANCING</span> @Html.CheckBox("Hobby", new { @id = "Hobby", @value = "DANCING" })
                        <span>WRITING</span> @Html.CheckBox("Hobby", new { @id = "Hobby", @value = "WRITING" })
                        <span>SINGING</span> @Html.CheckBox("Hobby", new { @id = "Hobby", @value = "SINGING" })
                        <span>COADING</span> @Html.CheckBox("Hobby", new { @id = "Hobby", @value = "COADING" })*@
                    @Html.ValidationMessageFor(model => model.Hobby, "", new { @class = "text-danger" })
                </div>
            </div>
    

2 个答案:

答案 0 :(得分:0)

假设数据库上只有一个“爱好”列,则可以为爱好复选框使用单独的ID。

然后使用列表获取复选框的值,然后将您的爱好字符串连接到单个字符串。将该字符串变量传递给您的SQL函数。您可以执行以下操作:

string myHobbies { get; set; } 

protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
     List<CheckBox> hobbyCheckBoxList = new List<CheckBox>();
     hobbyCheckBoxList.Add(CheckBox1);
     hobbyCheckBoxList.Add(CheckBox2);
     hobbyCheckBoxList.Add(CheckBox3);
     hobbyCheckBoxList.Where(x => x.Checked).Select(x=>x.Text);
     myHobbies.Text = string.Join(",", hobbyCheckBoxList.Where(x => x.Checked).Select(x => x.Text));
}

关于您的SQL参数函数:

 public void AddEmployee(Employee emp, string)
    {
        using (SqlConnection con = new SqlConnection(ConnectionString))
        {
            SqlCommand cmd = new SqlCommand("spaddEmployee", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@FirstName", emp.FirstName);
            cmd.Parameters.AddWithValue("@LastName", emp.LastName);
            cmd.Parameters.AddWithValue("@Gender", emp.Gender);
            cmd.Parameters.AddWithValue("@DOB", Convert.ToDateTime(emp.DOB));
            cmd.Parameters.AddWithValue("@Hobby", myHobbies);
            cmd.Parameters.AddWithValue("@Photo", emp.Photo);
            cmd.Parameters.AddWithValue("@City", emp.City);

            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }

答案 1 :(得分:0)

您的模型将类似于

Employee{
    public string FirstName{get;set;}
    public string LastName{get;set;}
    public List<Hobby> Hobbies{get;set;}   
}

Hobby{
    public string HobbyName{get;set;}
    public string HobbyCode{get;set;}
    public bool IsSelected{get;set;}
}

在.cshtml文件中,您需要应用for循环以填充“兴趣爱好”复选框控件

   @for (int i = 0; i < Model.Hobbies.Count; i++)
     {
        <div class="form-group">
                    @Html.LabelFor(model => Hobbies[i].HobbyName, htmlAttributes: new { @class = "control-label col-md-2" })
                    <div class="col-md-10">
                        @Html.CheckBoxFor(x => x.Hobbies[i].IsSelected, new {name=@Model.Hobbies[i].HobbyCode,id= @Model.Hobbies[i].HobbyCode})
                                                            <span class="slider"></span>
                        @Html.ValidationMessageFor(model =>Hobbies[i].IsSelected, "", new { @class = "text-danger" })
                    </div>
                </div>
 }

在Hobbies数组中,您将获得IsSelected标志true或false。

获取所选爱好的完整列表以应用LINQ查询,如:

Employee.Hobbies.Where(o => o.IsSelected);