C# 选择所选的值
我有一个带有一些值的下拉框。当用户选择一个值并点击save时,我想在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
[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);
}