вставить выпадающий список в базу данных в asp.net mvc - PullRequest
0 голосов
/ 24 июня 2019

Я хочу вставить значение раскрывающегося списка в базу данных из контроллера:

 public ActionResult PostMessage(ViewModel vm)
    {
        Models.Message messagetoPost = new Models.Message();
        ViewBag.Userlist = new SelectList(dbContext.Users, "Id", "UserName");
        ViewBag.Userlist = messagetoPost.MessageTosend;

        dbContext.Messages.Add(messagetoPost);
        dbContext.SaveChanges();
    }

Просмотр

  @Html.DropDownList("Userlist", null, htmlAttributes: new { @class = "form-control" })

Ответы [ 2 ]

0 голосов
/ 24 июня 2019
@Html.DropDownList("Userlist", null, htmlAttributes: new { @class = "form-control" })

изменение

 @Html.DropDownList("User",ViewBag.Userlist, null, htmlAttributes: new { @class = "form-control" })

В этом месте "Пользователь" - это имя выпадающего имени

ViewBag.UserList - параметры раскрывающегося списка

null помещается. Если вам нужно установить выбранное значение раскрывающегося списка

Имя выпадающего элемента управления и имя ViewBag совпадают с данными, не связанными должным образом

0 голосов
/ 24 июня 2019

Вы используете неправильную подпись.Вам нужно выбрать значение в вашей 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...