将下拉列表链接到数据库而不显示某些记录?

时间:2017-01-23 23:41:39

标签: asp.net-mvc entity-framework

我在数据库中的表目前有3列(id,name和role)。 我正在尝试基于此表创建一个下拉列表,只有当它们具有某个角色时才会在下拉列表中显示这些名称。

下面是我的模型,然后是我的cshtml,运行时会显示所有条目的下拉列表,如何将这些条目限制为只有“admin”角色的条目。

模型

public class Roles
{
    public int id { get; set; }

    [Display(Name = "Name")]
    public string name { get; set; }

    [Display(Name = "Role")]
    public string role { get; set; }

}

CSHTML:

            <div style="float:right;">
                @{
                    NomineesDbContext db = new NomineesDbContext();
                    var rolesList = db.roles.ToList();
                    ViewBag.roles = new SelectList(rolesList, "id", "name");
                }
                @Html.DropDownList("id", ViewBag.roles as SelectList, "PLT Member to call", htmlAttributes: new { @class = "form-control" })
            </div>

的DbContext:

public DbSet<Roles> roles { get; set; }

1 个答案:

答案 0 :(得分:0)

考虑到您只想从db中选择那些记录为role = admin的记录。 以下是代码

NomineesDbContext db = new NomineesDbContext();
                    var rolesList = db.roles.Where(x=> x.role == "admin").ToList();
                    ViewBag.roles = new SelectList(rolesList, "id", "name");

但是建议您在Associated Controller Action中添加以上3行代码,在View页面中添加代码不是一个好习惯