C# 选择所选的值

C# 选择所选的值,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个带有一些值的下拉框。当用户选择一个值并点击save时,我想在C代码中获得所选的值 这是我的密码: [HttpPost] public ActionResult AddAdmin(AdminViewModel model) { if(ModelState.IsValid) { List<Roles> list = col.Roles.ToList(); model.Roles = col.Ro

我有一个带有一些值的下拉框。当用户选择一个值并点击save时,我想在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);
 }
现在我正试图这样选择它:

RoleName = list.Select(x => x.RoleName).ToString()
但我在数据库中得到的是:

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

我做错了什么?

我猜您想将角色对象中匹配的RoleName作为字符串返回

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

在视图中检查null也是一个好主意,这样它就不会中断列表。Selectx=>x.RoleName返回一个RoleName集合。。。。当您执行ToString操作时,它将返回该集合的typename。如果您只需要一个角色名,那么应该执行列表。其中x=>x.RoleName==Admin.Selectx=>x.RoleName.FirstOrDefault;试试这个=>RoleName=list.FirstOrDefaultx=>x.RoleName==Admin;忘了管理员吧,那只是个愚蠢的例子。我不知道用户选择了什么值,它可以是任何值。我只想知道这个值是多少,然后保存到数据库中。我不认为FirstOrDefault可以,因为它只会给我列表中的第一个值?
[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);
}
[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);
}