Выберите выбранное значение - PullRequest
1 голос
/ 30 марта 2019

У меня есть выпадающий список с некоторыми значениями. Когда пользователь выбирает значение и нажимает «Сохранить», я хочу получить это выбранное значение в коде C #.

Вот мой код:

 [HttpPost]
 public ActionResult AddAdmin(AdminViewModel model)
 {           
     if(ModelState.IsValid) 
     {
         List<Roles> list = col.Roles.ToList();
         model.Roles = col.Roles.ToList().Select(x => new SelectListItem()
         {
             Value = x.RoleName,
             Text = "Choose a role...",
         }).ToList();

         var admin = new Admin()
         {
             FirstName = model.FirstName,
             LastName = model.LastName,
             MemberEmail = model.MemberEmail,
             RoleName = list.Select(x => x.RoleName).ToString()
          };
          DBContext.Admin.Add(admin);
          DBContext.SaveChanges();
     }
     return View(model);
 }

Итак, что я хочу, это значение:

Value = x.RoleName  (Let's just say the value is "Admin")

Сейчас я пытаюсь выбрать его так:

RoleName = list.Select(x => x.RoleName).ToString()

Но в базе данных я получаю следующее:

System.Linq.Enumerable+WhereSelectListIterator`2[AuthSys.Models.Roles,System.String]

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 30 марта 2019
[HttpPost]
public ActionResult AddAdmin(AdminViewModel model)
{           
   if(ModelState.IsValid) 
   {
      List<Roles> list = new List<Roles>(col.Roles.ToList());
      model.Roles = col.Roles.ToList().Select(x => new SelectListItem()
            {
                Value = x.RoleName,
                Text = "Choose a role...",

            }).ToList();

     var admin = new Admin()
     {
        FirstName = model.FirstName,
        LastName = model.LastName,
        MemberEmail = model.MemberEmail,
        //// If RoleName column is an type of VarChar then you are doing wrong here.
        // RoleName = list.Select(x => x.RoleName).ToString();

        //// try static string of role.
        RoleName = "Admin"
        or
        RoleName = list.FirstOrDefault(x => x.RoleName == model.[RoleNameFieldFromModel])?.RoleName;
     };

     DBContext.Admin.Add(admin);
     DBContext.SaveChanges();
   }
  return View(model);
}
1 голос
/ 30 марта 2019

Полагаю, вы хотите вернуть то, что соответствует RoleName из объекта Role, в виде строки

RoleName = list.FirstOrDefault(x => x.RoleName == "Admin")?.RoleName;

Хорошей идеей будет также проверить нулевое значение в вашем представлении, чтобы оно не ломалось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...