保存包含dropdownlistvalue的对象时发生异常

时间:2019-03-01 13:38:44

标签: c# asp.net-mvc razor

我正在尝试保存一个对象,该对象包含一个来自下拉框(SelectList)的值 尝试保存时由于某种原因,我得到了Nullpoint。 Nullpointer引发了您在下面我的视图中看到的代码段

 <div class="form-group">
        @Html.LabelFor(model => model.RoleName, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
           @Html.DropDownListFor(model => model.Roles, new SelectList(Model.Roles, "Value", "Value"), new { @class = "text-danger AddMemberControls" })
        </div>
    </div>

我从屏幕上的下拉列表中选择了一个值,然后单击“保存”,但是看来模型没有传递该值。 我的模型(ViewModel)看起来像这样:

public class AdminViewModel
{
    public int MemberID { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string MemberEmail { get; set; }

    public string Password { get; set; }

    public IEnumerable<SelectListItem> Roles { get; set; }

    public string RoleName { get; set; }
}

控制器看起来像这样

[HttpPost]
    public ActionResult AddAdmin(AdminViewModel model)
    {
        //var selectedVal = new SelectList(model.Roles);

        if(ModelState.IsValid) 
        {
            var admin = new Admin()
            {
                FirstName = model.FirstName,
                LastName = model.LastName,
                MemberEmail = model.MemberEmail
               // RoleName = selectedVal.DataTextField
                ...
            };
        }
        ...
        return View("AddAdmin");
    }

在调试模式下运行时,ModelState.IsValid的计算结果为false,然后视图引发上述异常。

如果您想查看如何在HttpHet中填充Dropdownlist,请使用以下代码

[HttpGet]
    public ActionResult AddAdmin()
    {
        DataAccessLayer.ColoContext col = new DataAccessLayer.ColoContext();

        List<Roles> list = new List<Roles>(col.Roles.ToList());
        AdminViewModel viewMod = new AdminViewModel();                         

        //viewMod.Roles = new SelectList(list);

        viewMod.Roles = col.Roles.ToList().Select(x => new SelectListItem()
        {
             Value = x.RoleName,
             Text = x.RoleDescription
        }).ToList();

        return View(viewMod);
    }

我们非常感谢您的帮助

0 个答案:

没有答案