2009-11-25 29 views
5

私はロールベースの権限システムを用意しており、adminの役割ごとに権限を編集できるようにしたいと考えています。これを行うには、多くのチェックボックスをロードする必要がありますが、返信データをビューから取得するのには苦労しています。ASP.Net MVC - 複数のチェックボックスを処理する

注:私は同じような質問を見つけましたが、解決策を見つけることはできません。

<% 
    Html.BeginForm(); 

    string lastGroup = ""; 
    foreach (var CurPermission in Model) 
    { 

%> 
     <%=Html.CheckBox("Permissions", CurPermission.Checked, new { ID = CurPermission.PermissionId}) + " " + CurPermission.PermissionValue%> 

     <br /> 
<% 
    } 
    %> 
     <input type="submit" value="Submit" /> 
    <% 
    Html.EndForm(); 
%> 

とコントローラ

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult EditPermissions(String[] Permissions) 
     { 
      foreach (var CurPermission in Permissions) 
      { 
       Debug.WriteLine(CurPermission); 
      } 

      return View(); 
     } 

はもちろん、私はボックスがあるものと同様にチェックされていないかを知る必要があります。しかし、全体のための戻り値( "true、false")では、どの値がどのチェックボックスに関連するのかわかりません。

修正に関する提案や、おそらく別の方法が推奨されます。

答えて

11

ここでは、プロジェクトにメンバーを割り当てるために使用するいくつかのコードスニペットを示します。うまくいけば、このコードが役立ちます。我々が持っているビューで

<p> 
    <label> 
     Select project members:</label> 
    <ul> 
     <% foreach (var user in this.Model.Users) 
      { %> 
     <li> 
      <%= this.Html.CheckBox("Member" + user.UserId, this.Model.Project.IsUserInMembers(user.UserId)) %><label 
       for="Member<%= user.UserId %>" class="inline"><%= user.Name%></label></li> 
     <% } %></ul> 
</p> 

我々が持っているコントローラでは:

// update project members 
foreach (var key in collection.Keys)  
{ 
    if (key.ToString().StartsWith("Member")) 
    { 
     int userId = int.Parse(key.ToString().Replace("Member", "")); 
     if (collection[key.ToString()].Contains("true"))  
      this.ProjectRepository.AddMemberToProject(id, userId); 
     else 
         this.ProjectRepository.DeleteMemberFromProject(id, userId); 
    } 
} 

HTMLのチェックボックスヘルパーでの作業時に覚えておくべき主なものを使用することです(含まれている)を決定します正しいか間違っているか。

+0

シンプルでポイントに感謝します。 – LiamB

+0

ビューモデル内でIsUserInMembersをどのように実装しますか? –

0

SOについては、thisのトピックを必ず確認してください。

関連する問題