5

わかりました。役割ベースの権限システムを導入しており、管理者が各役割の権限を編集できるようにしたいと考えています。これを行うには、多くのチェックボックスをロードする必要がありますが、ビューからの戻りデータの取得に苦労しています

注意してください:私は周りを見回しました、私は同様の質問を見つけましたが、まだ解決策を見つけることができません.

 <%
     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」)のため、戻り値では、どの値がどのチェックボックスに関連しているかわかりません。

修正または別の方法の可能性についての提案は、感謝されます。

4

2 に答える 2

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 チェックボックス ヘルパーを使用するときに覚えておくべき主なことは、contains() を使用して true または false を判断することです。

于 2009-11-25T09:55:38.080 に答える
0

SOのこのトピックを必ず確認してください。

于 2009-11-25T09:55:31.967 に答える