###前提・実現したいこと
MVCでアプリケーションを作成した際に自動生成されるAccountに対して、role(役割)を付加して[Authorize(Roles = "Admin,Editor")]などが使える状態にしています。
管理者権限を持っているユーザーが他のユーザーに権限を割り当てるページを作成したいのですが、各ユーザーごとに編集ページに遷移するのはユーザーの数が増えると非常に使い勝手が悪くなると思い、今回は一括で編集できるようなページを作成しようとしています。(下図イメージ)
この登録のボタンを押した際にデータがサーバーに反映されて、ページが更新される仕様にしたいを実装したいです。
###発生している問題・エラーメッセージ
データベースの各テーブルから必要なデータを取得して、各ユーザーの社員番号とどの権限を持っているかをテーブルに表記することはできましたが、登録ボタン押下時にControllerへテーブルにした情報をDataTableなどにして返す方法がわかりませんでした。
###該当のソースコード
Controller
public ActionResult Index(DataTable strmodel) { テーブルに情報があれば内容を精査してデータベースに書き込みを行う。 DataTable tb = new DataTable(); var Manager = new RoleManager<ApplicationRole>(new RoleStore<ApplicationRole>(new ApplicationDbContext())); var models = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); System.Type TpStr = typeof(string); System.Type Tpbool = typeof(bool); tb.Columns.Add(new DataColumn("社員番号", TpStr)); foreach (ApplicationRole role in Manager.Roles) { tb.Columns.Add(new DataColumn(role.Name, Tpbool)); } var dr = tb.NewRow(); foreach (var model in models.Users) { dr["社員番号"] = model.UsId; foreach (ApplicationRole role in Manager.Roles) { var Usrole = role.Users.Select(a => a.UserId).ToList(); if (Usrole.Contains(model.Id.ToString())) { dr[role.Name] = true; } else { dr[role.Name] = false; } } tb.Rows.Add(dr); } return View(tb); } }
view
@using (Html.BeginForm("Index", "Account", FormMethod.Get, new { @class = "form-inline" })) { <table class="table"> <tr> @foreach (var item in Model.Columns) { <th> @item.Caption </th> } </tr> @foreach (System.Data.DataRow item in Model.Rows) { <tr> @{ count = item.ItemArray.Count(); } @for (var i = 0; i < count; i++) { <td> @if (item.ItemArray[i].GetType() == typeof(string)) { @item.ItemArray[i] } else { @Html.CheckBox((string)Model.Columns[i].Caption, (bool)item.ItemArray[i]) } </td> } </tr> } </table> <div class="form-group"> <input type="submit" class="btn btn-default" value="登録" /> </div> }
###試したこと
View側の情報をViewbagに格納してみたりしましたが、チェックボックスの編集後の情報が入ってこないなどの状況です。
説明など拙いところがあるかと思いますが、助けていただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/23 08:07