2011-12-06 10 views
2

データベースにあるユーザーのすべての役割を表示する必要があります。私は別のSOの投稿で見つけたLINQクエリを使用しています。私の見解ではコードスニペットに問題があります。このエラーが発生します:CS0103:「AllUsers」という名前が現在のコンテキストに存在しません。ここに私のコードだ...データベースMVC内のユーザーのユーザー役割を表示

のViewModel:

 public class MyViewModel 
    { 
     public IEnumerable<MyUser> AllUsers { get; set; } 
     public List<MyUser> myList { get; set; } 
    } 

コントローラー:

public class RoleController : Controller 
    { 
     public ActionResult GetUsers() 
     { 
      var roles = from MembershipUser u in Membership.GetAllUsers() 
        select new MyUser 
        { 
         User = u, 
         UserRoles = Roles.GetRolesForUser(u.UserName) 
        }; 

      List<MyUser> res = new List<MyUser>(); 

      foreach (MyUser u in roles) 
       res.Add(u); 

      MyViewModel model = new MyViewModel { AllUsers = res }; 

      return View(model); 
     } 
    } 

ビュー(抜粋):

<td> 
    @if(!(bool)(ViewBag.UserNameIsFound != null)) 
    {      
    @Html.ActionLink("Add as user", "CreateUser", "Account") 
    <br />      
    foreach (MyUser u in Model.AllUsers) 
    { 
     foreach (string role in u.UserRoles) 
     { 
       AllUsers = MyList.Add(currItem); 
       Console.WriteLine(role + "<br />"); 
     } 
    } 
} 
</td> 

任意の助けいただければ幸いです。前もって感謝します。

+0

どのようなタイプのモデルが必要ですか? :) –

+0

私はこの問題に遭遇している理由の別のviewmodelを使用しています – multiv123

+0

これの周りの方法はありますか? – multiv123

答えて

0

私はあなたのビューの次の行を変更する必要があると思います。 「AllUsers」という名前の変数は何ですか、なぜAllUsersがここにいるのですか?

AllUsers = MyList.Add(currItem); 
0

私が取得することはできません、10行目が何を意味するのか:

<td> 
    @if(!(bool)(ViewBag.UserNameIsFound != null)) 
    {      
    @Html.ActionLink("Add as user", "CreateUser", "Account") 
    <br />      
    foreach (MyUser u in Model.AllUsers) 
    { 
     foreach (string role in u.UserRoles) 
     { 
       // what means the next line? what is "AllUsers"? 
10:   AllUsers = MyList.Add(currItem); 
       Console.WriteLine(role + "<br />"); 
     } 
    } 
} 
</td> 

AllUsersとは何ですか?私はそれがローカル変数として宣言されているのを見ません。 Model.AllUsersを意味する場合は、最初にModel.AllUsersを繰り返し、常に新しいものに変更します。それもあまり明確ではない。
10行目をコメントアウトしてみてください。

+0

私はそれをコメントしましたが、まだモデルを持っています外部ループの.AllUsers。これをどうすれば解決できますか? – multiv123

+0

モデルのタイプをコンパイラに伝える必要があります。ファイルの最上部に '@model NameSpace.MyViewModel'と打つべきです –

関連する問題