我正在尝试保存一个对象,该对象包含一个来自下拉框(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);
}
我们非常感谢您的帮助