C# 用ViewModel中的数据填充@Html.DropDownListFor

C# 用ViewModel中的数据填充@Html.DropDownListFor,c#,model-view-controller,C#,Model View Controller,我有向用户添加角色的工作代码。现在我想用应用程序中可用的(全部)角色替换dropdownlist输入的文本。我现在知道有html tag@html.DropDownListFor,所以我创建了新的ViewModel,其中包含我需要的所有数据,但现在我陷入了死胡同。我尝试使用foreach并为列表中的每个项目填充数据,但结果不起作用。尝试@Htm.DropDownListFor也会产生相同的效果。有人能告诉我怎么做吗?谢谢 控制器: public async Task<IActionRe

我有向用户添加角色的工作代码。现在我想用应用程序中可用的(全部)角色替换dropdownlist输入的文本。我现在知道有html tag@html.DropDownListFor,所以我创建了新的ViewModel,其中包含我需要的所有数据,但现在我陷入了死胡同。我尝试使用foreach并为列表中的每个项目填充数据,但结果不起作用。尝试@Htm.DropDownListFor也会产生相同的效果。有人能告诉我怎么做吗?谢谢

控制器:

  public async Task<IActionResult> AddRoleToUser(string id, string role)
{
   var user = await _userManager.FindByIdAsync(id);

   if (await _roleManager.RoleExistsAsync(role))
   {
      await _userManager.AddToRoleAsync(user, role);
   }

   return RedirectToAction("UserGroups", new { id });
}
公共异步任务AddRoleToUser(字符串id,字符串角色)
{
var user=await\u userManager.FindByIdAsync(id);
if(wait_roleManager.RoleExistsAsync(角色))
{
wait_userManager.AddToRoleAsync(用户,角色);
}
返回重定向操作(“用户组”,新的{id});
}
视图模型:

 public class UserGroupsViewModel
 {
    public ApplicationUser ApplicationUser { get; set; }
    public IList<string> RolesList { get; set; }
    public IQueryable<ApplicationRole> AllRoles { get; set; }
 }
public类UserGroupsViewModel
{
公共应用程序用户应用程序用户{get;set;}
公共IList角色列表{get;set;}
公共IQueryable所有角色{get;set;}
}
看法

@model AdminMVC.Models.Admin.UserGroupsViewModel
@使用(Html.BeginForm(“AddRoleToUser”,“Admin”,新的{id=Model.ApplicationUser.id}))
{
为用户命名新角色:

}
我的问题可能与另一个问题重复。但我看到了那个问题,还是做不到。
我是否必须将IList更改为包含两个值id和字符串的列表?并在viewmodel中添加其他位置以存储结果?

将角色列表更改为
选择列表
,并添加
角色
属性:

public SelectList RolesList { get; set; }
public string Role{get;set;}
使用创建
选择列表

model.RolesList = new SelectList(listOfRoles);
那么在你看来,

@Html.DropDownListFor(x => x.Role, Model.RolesList)
如果一切正常,您的帖子应该包含填充的
角色。

可能重复的
@Html.DropDownListFor(x => x.Role, Model.RolesList)