使用 MVC 4、实体框架和简单成员资格 * NEWB ALERT * 刚刚开始使用脚手架和 CRUD。
在我们的场景中,用户只能拥有一个角色(数据库中的 webpages_UsersInRoles 表)我有一个 userProfile 域类,但我正在通过 viewModel 进行更新。
我的目标是在显示所有可能角色的视图中创建一个选择列表。当视图加载时,该用户拥有的角色将是列表中的第一个选定项(selected selected 属性)
我什至从未从模型或控制器中创建过选择列表,所以请放轻松!
到目前为止,我有以下内容:
public class EditAdminModelVM
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public IEnumerable<string> UserInRole { get; set; }
//** I believe the function that returns the list of roles
a user is in is of type IEnumerable - though I could be wrong. **
[HiddenInput]
public int UserId { get; set; }
}
然后在我的控制器中,我有:
public ActionResult EditAdmin(int id = 0)
{
myDB db = new myDB();
var viewModel = new EditAdminModelVM();
var UserRoles = Roles.GetAllRoles();
SelectList UserRolesList = new SelectList(UserRoles);
viewModel = db.UserProfiles
.Where(x => x.UserId == id)
.Select(x => new EditAdminModelVM
{
FirstName = x.FirstName,
LastName = x.LastName,
Email = x.Email,
UserName = x.UserName,
UserId = x.UserId,
UserInRoles = Roles.GetRolesForUser(x.UserName)
}).FirstOrDefault();
ViewBag.UserRolesList = UserRolesList;
return View(viewModel);
}
这里的问题是我收到此行的警告:Roles.GetRolesForUser(x.UserName),它说不能将类型字符串隐式转换为 Systems.Collections.Generic.List。我尝试将我的 Model 属性更改为类型 List<> 但这会导致相同的错误。
任何帮助,将不胜感激!