【问题标题】:Error cased by passing a list via viewBag "Object reference not set"通过 viewBag “未设置对象引用”传递列表导致的错误
【发布时间】:2020-03-04 15:56:18
【问题描述】:

我正在尝试在从控制器传递的 asp.net 中的 View 部分中显示项目列表,如下所示:

public ActionResult Register()
{
    ViewBag.Roles = new SelectList(db.Roles.ToList(),"Name","Name");

    return View();
}

<div class="form-group">
    @Html.LabelFor(m => m.Roles, new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @Html.DropDownList("Roles",null, "Name",new { @class = "form-control" })
    </div>
</div>

[Required]
[Display(Name = "Group")]
public string Roles { get; set; }

但是我得到了以下错误:

对象引用未设置为对象的实例。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

显示这行代码时出错:

Line 143:            ViewBag.Roles = new SelectList(db.Roles.ToList(),"Name","Name");

public void CreateRoles()
{
    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(db));
    IdentityRole role;

    if(!roleManager.RoleExists("Admins"))
    {
        role = new IdentityRole();
        role.Name = "Admins";
        roleManager.Create(role);
    }
}

有关错误的其他详细信息:

在 ASP.Identity.dll 中发生了“System.NullReferenceException”类型的异常,但未在用户代码中处理

【问题讨论】:

  • 我也更新了数据库

标签: asp.net model-view-controller asp.net-identity


【解决方案1】:

你可以试试这个:

  @Html.DropDownList("Roles",(<SelectList>)ViewBag["Roles"], "Name",new { @class = "form-control" })

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2016-06-10
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多