Я пытаюсь сохранить объект, содержащий значение из раскрывающегося списка (SelectList). По какой-то причине я получаю нулевую точку при попытке сохранить. 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, вот код
[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);
}
Да нулевая ссылка. Прости. Причина, по которой я не добавил сообщение об ошибке, заключается в том, что оно не на английском языке, поэтому мало кто его все равно поймет.
Связанный дубликат содержит значительную информацию о том, что означает NullReferenceException и как с ним бороться. По сути, где-то в вашем коде вы пытаетесь использовать объект, который является null. Вам нужно определить строку кода, вызывающую исключение, и объект в этой строке, который является null. Затем либо измените код, чтобы он обрабатывал значение null в этом объекте, либо отследите, откуда появился объект, и исправьте этот код, чтобы предоставить допустимый объект вместо null.
В вашем случае кажется вероятным, что Model.Roles выдает ошибку. Вы пытаетесь разыменовать объект Model, но не передаете модель в представление: return View("AddAdmin");





Вы имеете в виду
NullReferenceException?