【问题标题】:How to show a list of checkbox according to a DropDownList in ASP MVC and Entity Framework如何根据 ASP MVC 和实体框架中的 DropDownList 显示复选框列表
【发布时间】:2013-05-24 07:38:15
【问题描述】:

我正在使用 C# 和 SQL Server 2005 开发一个 ASP .Net MVC 3 应用程序。

我也在使用实体框架和代码优先方法。

我有一个视图“应用程序”,其中包含一个 DropDownList 和一个表格。

DropDownList 的项目正在以列表的形式从基础 (Table=Genre) 加载。

根据DropDownList中的选中项,我想在表格中以CheckBox的形式在base中做一些值(列表)。

我尝试了 CheckBoxFor 但它不起作用。

这是视图:

 <div>         
         <%:Html.Label("Type :")%><%: Html.DropDownListFor(model => model.SelectedGenre, Model.GenreItems)%>

   </div>

   <table border = "transparent">
    <tr>
        <th>

        </th>

        </tr>

        <% foreach (var item in Model.FaItems) { %>
    <tr>
         <td>

            <%: Html:CheckBoxFor (modelItem => item.Nom_Famille) %>
        </td>


    </tr>
     <% } %>

    </table>

这是控制器:

[HttpGet]
        public ActionResult Application(Genre genre)
        {
            var vv = new FlowViewModel();

            vv.GenreItems = new SelectList(db.Genres.ToList(), "ID_G", "ID_G");


            if (vv.SelectedGenre == "Famille")
            {

                vv.FaItems = db.Familles.ToList();


            }
            else if (vv.SelectedGenre == "Sous Famille")
            {
                vv.SFItems = db.Sous_Familles.ToList();

            }
            return View(vv);

        }

这是模型:

public class FlowViewModel
{

    [Key]
    public string IDv { get; set; }

    public List<Famille> FaItems { get; set; }
    public List<Sous_Famille> SFItems { get; set; }
    [NotMapped]
    public SelectList GenreItems { get; set; }
    public string SelectedGenre { get; set; } 

    public FlowViewModel()
    {
        FaItems = new List<Famille>();
        SFItems = new List<Sous_Famille>();
    }
}

注意:

我想选择列表中的一些值(检查它们)并将其记录在基础中,如果您有任何其他建议,除了复选框,这将非常有用。 谢谢。

【问题讨论】:

    标签: c# sql-server visual-studio-2010 asp.net-mvc-3 entity-framework


    【解决方案1】:

    为了在复选框中显示用户角色,我做了以下操作,您可以找到自己的方式。不同的是,我在 Razor 中做过

                 @{
                    var roles = (SimpleRoleProvider)Roles.Provider;
                    string[] strroles = roles.GetAllRoles();
                    string[] userorles = roles.GetRolesForUser(Model.UserName);
                    foreach (string strrole in strroles)
                    {
                        bool isinrol = false;
                        foreach (string struserroles in userorles)
                        {
                            if (strrole == struserroles)
                            {
                                isinrol = true;
                            }
                        }
                        if(isinrol)
                        {
                            <input type="checkbox" id="roles[]"  name="roles" value="@strrole" checked="checked" /> @strrole <br />
                        }
                        else
                        {
                            <input type="checkbox" id="roles[]" name="roles"  value="@strrole"/> @strrole <br />
                        }
                    }
                  }
    

    【讨论】:

    • Thx,但是如果 Razor 与 ASPX 不同,那么我们的解决方案之间也存在一些差异。我只需要如何从基础加载复选框列表,我根据您的代码尝试了这个: 我不知道我会放什么值
    • 这将是一个值,您希望在发布后发送给操作
    • 在我的例子中是角色名称
    • 是的,这是我要发送的值,但是我认为我如何定义以及表的定义是错误的
    • 不,没关系,你只需要像以前一样迭代列表......或者,如果我误解了,请问“错误的表定义”是什么意思
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签