首页 > 解决方案 > 从下拉列表中选择值后出现空异常,值不能为空

问题描述

我在我的 registerViewModel 类中添加了更多字段,其中之一是通过迁移收集的 Membershiptypes 然后我还修改了我的 Accountcontroller 和 myregister.cshtml以便我可以有一个下拉列表。因此,当我尝试在下拉列表中选择我收到的项目null exception并且应用程序中断时,它不再创建用户。

这是我的注册视图模型。

public class RegisterViewModel{      

   public ICollection<MembershipType> MembershipTypes { get; set; }

   [Required]
   public int MembershipTypeId { get; set; }
}

这是我的获取方法。

[AllowAnonymous]
public ActionResult Register()
{
    using (var db = ApplicationDbContext.Create())
    {
        RegisterViewModel newUser = new RegisterViewModel
        {
            MembershipTypes = db.MembershipTypes.ToList(),
            BirthDate = DateTime.Now
        };
            return View(newUser);
    }
}

这是我的发帖方法。

if (ModelState.IsValid)
{
    var user = new ApplicationUser
        {
            UserName = model.Email,
            Email = model.Email,
            BirthDate = model.BirthDate,
            FirstName = model.FirstName,
            LastName = model.LastName,
            Phone = model.Phone,
            MembershipTypeId = model.MembershipTypeId,
            Disable = false
        };
    var result = await UserManager.CreateAsync(user, model.Password);
}

而我的RegisterView 是这样的。

<div class="form-group">
    @Html.LabelFor(m => m.MembershipTypeId, "MembershipTypeId", htmlAttributes: new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @Html.DropDownListFor(m => m.MembershipTypeId, new SelectList(Model.MembershipTypes, "Id", "Name"),"Select List", new { @class = "form-control" })
    </div>
</div>

当我注册用户时,它应该转到数据库,但它没有初始化结果变量中的成员资格类型,因此它会抛出一个值不能为空的异常。

标签: c#asp.netasp.net-mvc-5

解决方案


推荐阅读