首页 > 解决方案 > 无法从实体框架填充 ASP.NET MVC 5 中的下拉列表

问题描述

我正在尝试在 ASP.NET MVC 5 中填充下拉列表,但没有成功。

控制器:

[AllowAnonymous]
[HttpGet]
public ActionResult PartialRegistrationRoles()
{
        using (DBModels db = new DBModels())
        {
            List<Role> allRoles = db.Roles.ToList();
            var roles = new SelectList(db.Roles.ToList(),"RoleName");
            ViewData["DBRoles"] = roles.Items;
        }

        return View();
}

部分观点:

@using System.Collections
@using WorkFinder.Models
@model WorkFinder.Models.Role


<div class="form-group">
    @Html.DropDownList("Roles", new SelectList((IEnumerable) 
    ViewData["DBRoles"]),"Roleid","RoleName")
   </div>

实际下拉列表:

下拉列表只是检索一些 SYSTEM.DATA.ENTITY...

浏览主视图时出错,但是,下拉菜单显示在部分视图中:

主视图中的错误

谁能帮我理解我做错了什么?

谢谢!

标签: asp.net-mvcentity-frameworkviewdropdownhtml.dropdownlistfor

解决方案


首先,看一下DropDownListSelectList的重载方法。很可能您放错了支架并打算执行以下操作:

@Html.DropDownList("Roles", new SelectList((IEnumerable)ViewData["DBRoles"],"Roleid","RoleName"))

将此称为局部视图,请显示相关代码(主视图),我将更新答案。


推荐阅读