使用mvc4中数据库的值动态选中复选框

时间:2014-08-05 04:16:09

标签: c# asp.net-mvc-4 checkbox

我根据数据库中的现有数据创建了一个动态复选框。 为了存储到数据库,我使用每个复选框中包含的id。问题是,当我想编辑数据并返回复选框的值时,不会动态检查复选框。 我需要知道的是如何根据已经存储在数据库中的id加载编辑页面时动态选中复选框。

这里是我的一些代码

编辑视图中的

  @foreach (var item in Model.ModulList) // for generated dynamic checkboxes

   {
     <tr>
       <td>

        <input type="checkbox" data-toggle="checkbox" name="SelectedModuls" Value ="@item.ModulID">@item.ModulName  // Got stuck in this session


       </td>
      </tr>
    }
控制器中的

 public ActionResult Edit(int id)
    {
       return View(DAM.GetMenuById(id));
    }

在数据访问函数GetMenuById(id)

public MenuModel GetMenuById(int id)
    {
        MenuModel menus = new MenuModel();
        menus.ModulList = GetModuleList();
        menus.StatusList = MenuStatus;

        try
        {
             string query = string.Format(@"SELECT DISTINCT M.MenuID, M.MenuName, Md.ModulID, Md.ModulName from Menu M
                                            LEFT JOIN MenuModul MM ON MM.MenuID = M.MenuID 
                                            LEFT JOIN Modul Md ON Md.ModulID = MM.ModulID 
                                            where M.MenuID = {0} AND M.IsDeleted = 0", id);
            SqlCommand cmd = new SqlCommand(query, conn);
            conn.Open();

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();

            da.Fill(dt);

            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                menus.MenuID = Convert.ToInt32(dt.Rows[i]["MenuID"]);
                menus.MenuName = Convert.ToString(dt.Rows[i]["MenuName"]);
                menus.ModulID = Convert.ToInt32(dt.Rows[i]["ModulID"]);
                menus.ModulName = Convert.ToString(dt.Rows[i]["ModulName"]);
            }

          // I fetch ModulID and ModulName data for return the checkbox value when I want to edit.

            da.Dispose();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        finally
        {
            conn.Close();
        }

        return menus;
    }

请帮忙,我将非常感激:)

2 个答案:

答案 0 :(得分:0)

复选框输入应具有唯一的名称,因为它们在POST数组中使用。 Radiobutton输入共享一个名称,因为您只需要一个&#34;值&#34;帐。

答案 1 :(得分:0)

尝试添加checked属性,如下所示:

<input type="checkbox" data-toggle="checkbox" name="SelectedModuls" Value ="@item.ModulID" checked>@item.ModulName