Вы используете неправильную подпись.Вам нужно выбрать значение в вашей ViewModel, например, UserId
:
@Html.DropDownList("UserId", ViewBag.Userlist, null, htmlAttributes: new { @class = "form-control" })
или еще лучше
@Html.DropDownListFor(m => m.UserId, ViewBag.Userlist, "Select User", htmlAttributes: new { @class = "form-control" })
Наконец, у вас есть некоторые другие ошибки (при условии, что это метод POSTгде вы хотите сохранить).Скопируйте опубликованные поля viewmodel в вашу сущность Message и сохраните (если нет ошибок):
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult PostMessage(ViewModel vm)
{
if (ModelState.IsValid)
{
Models.Message messagetoPost = new Models.Message
{
UserId = vm.UserId;
... other fields
};
dbContext.Messages.Add(messagetoPost);
dbContext.SaveChanges();
return RedirectToAction("Index");
}
// Failed, reset dropdown and return view with errors...
ViewBag.Userlist = new SelectList(dbContext.Users, "Id", "UserName");
return View(complianceItemViewModel);
}