0

MVC 4、Entity Framework、およびSimpleメンバーシップの使用* NEWBALERT*スキャフォールディングとCRUDの使用を開始したばかりです。

このシナリオでは、ユーザーは1つのロール(DBのwebpages_UsersInRolesテーブル)のみを持つことができます。userProfileドメインクラスがありますが、viewModelを介して更新しています。

私の目標は、考えられるすべての役割を示す選択リストをビューに作成することです。ビューが読み込まれると、このユーザーが持つ役割は、リストで最初に選択されたアイテム(選択された選択された属性)になります

モデルやコントローラーから選択リストを作成したことは一度もないので、気楽に行ってください。

これまでのところ、私は次のものを持っています:

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 に答える