###前提・実現したいこと
ASP.netで各アカウントに対してどの権限を付与するかを設定できるページを作成しており、
デバッグ環境では以下のように表示されて問題なく権限の変更も行えていたのですが、
リリース版として公開を行って最終チェックを行った所、データの取得ができていないのか、
以下のように空のテーブルが表示されてしまいました。
この原因が、全く分かりません。
また、Webの開発が初めてなのでリリース版のデバッグのやり方も分からず途方に暮れている状況です。
丸投げの様な質問になって申し訳ないのですが、表示する為のクリティカルな解決方法。
または、HttpResponseでどんな情報を取得しているかを確認する方法を知りたいです。
###発生している問題・エラーメッセージ
リリース版のHTMLソースを見てみると以下のようになっており、データが取得できていませんでした。
HTML
1</form> 2<form action="/CRM_sys/Account" class="form-inline" method="post"> <div class="col-lg-9 col-md-8 col-sm-12 col-xs-12"> 3 4 <table class="table"> 5 <tr> 6 <th> 7 社員番号 8 </th> 9 <th> 10 Admin 11 </th> 12 <th> 13 Visitor 14 </th> 15 <th> 16 User 17 </th> 18 <th> 19 Editor 20 </th> 21 </tr> 22 23 </table> 24 25 </div> 26 <div class="col-lg-offset-3 col-lg-9 col-md-offset-4 col-md-8 col-sm-12 col-xs-12"> 27 <div style="text-align:center"> 28 <input type="submit" class="btn btn-default" value="登録" /> 29 </div> 30 </div> 31</form> 32
###該当のソースコード
ControllerでDatatableを作成して、Viewに渡し、以下コード中央部の
for (var i = 0; i < count; i++)内でチェックボックスの表示を行っています。
View
@using (Html.BeginForm("Index", "Account", FormMethod.Post, new { @class = "form-inline" })) { <div class="col-lg-9 col-md-8 col-sm-12 col-xs-12"> <table class="table"> <tr> @foreach (var item in Model.Columns) { <th> @item.Caption </th> } </tr> @foreach (System.Data.DataRow item in Model.Rows) { var key = String.Format("list[{0}].", memberCount); <tr> @{ count = item.ItemArray.Count(); } @for (var i = 0; i < count; i++) { <td> @if (item.ItemArray[i].GetType() == typeof(string)) { @Html.Label((string)item.ItemArray[i]) @Html.Hidden(key + "Name", (string)item.ItemArray[i]) } else { @Html.CheckBox(key + (string)Model.Columns[i].Caption, (bool)item.ItemArray[i]) } </td> } </tr> memberCount++; } </table> </div> <div class="col-lg-offset-3 col-lg-9 col-md-offset-4 col-md-8 col-sm-12 col-xs-12"> <div style="text-align:center"> <input type="submit" class="btn btn-default" value="登録" /> </div> </div> }
コントローラー
C#
1 public ActionResult Index(string SearchStr) 2 { 3 DataTable tb = new DataTable(); 4 5 try 6 { 7 //権限情報をリスト化 8 var Manager = new RoleManager<ApplicationRole>(new RoleStore<ApplicationRole>(new ApplicationDbContext())); 9 //登録ユーザーのリスト化 10 var models = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 11 12 System.Type TpStr = typeof(string); 13 System.Type Tpbool = typeof(bool); 14 15 //datatableのカラムを作成 16 tb.Columns.Add(new DataColumn("社員番号", TpStr)); 17 18 foreach (ApplicationRole role in Manager.Roles) 19 { 20 tb.Columns.Add(new DataColumn(role.Name, Tpbool)); 21 } 22 23 //ユーザーごとにどの権限を持っているか確認 24 foreach (var model in models.Users) 25 { 26 var dr = tb.NewRow(); 27 dr["社員番号"] = model.UsId; 28 29 foreach (ApplicationRole role in Manager.Roles) 30 { 31 var Usrole = role.Users.Select(a => a.UserId).ToList(); 32 33 if (Usrole.Contains(model.Id.ToString())) 34 { 35 dr[role.Name] = true; 36 } 37 else 38 { 39 dr[role.Name] = false; 40 } 41 } 42 43 tb.Rows.Add(dr); 44 45 } 46 47 } 48 catch (Exception ex) 49 { 50 //省略 51 } 52 53 return View(tb); 54 } 55
###試したこと
ASP.netでの開発が初めてでデバッグ環境での動作確認しか行えていません。
###補足情報(言語/FW/ツール等のバージョンなど)
ASP.net MVC5
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー