0

使用 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<> 但这会导致相同的错误。

任何帮助,将不胜感激!

4

1 回答 1

1

您正在将 string[] 转换为列表。如果没有一些转换,这是不可能的。

尝试:

UserInRoles = new List(Roles.GetRolesForUser(x.UserName))

于 2013-03-24T22:51:10.287 回答