2016-05-25 14 views
0

私はをViewbag経由でビューに渡しました。このリストはjavascriptのvarに割り当てられ、ループしています。型付きのViewbagリストをループする方法は?

しかし、私はブレークポイントを設定しましたが、このforループのループは繰り返されません。

このループの目的は、adminUserListのユーザーが現在ログインしているユーザーと一致するかどうかを確認することです。 currentUserもinitであるため、この値を除外するルールはnullです。

この理由をデバッグするためです。私はViewbag.AdminUserListが割り当てられていて、それがコントローラであることをテストしました。私もこのリストのビューでアラートを設定し、initです。

質問:以下for loopはJavaScriptで呼び出されていない理由

、誰もが知っていますか?

これは、デバッグの際のjs adminUserListの値である:

var adminUserList = [{"AdminID":1,"AdminDisplayName":"brianb","AdminEmailAddress":"[email protected]"},{"AdminID":2,"AdminDisplayName":"wendy","AdminEmailAddress":"[email protected]"}]; 

コード:ループの

Javascriptを -

<script> 

    var currentUser = '@ViewBag.CurrUser'; 
    var adminUserList = @Html.Raw(Json.Encode(ViewBag.AdminUserList)); 

    $(document).ready(function() { 

     var historyTable = $('#table').DataTable({ 
      "order": [[6, "desc"]] 
     }); 

     //Loop through each of the admin users, if any of 
     //the admin users match the current user, hide the delete column. 
     for (var i = 0; i < adminUserList.Count; i++) 
     { 
      if (currentUser == adminUserList.AdminDisplayName[i]) { 
       //hide the delete table option from a non admin user 
       historyTable.columns([9]).visible(false); 
      } 

     }  

    }); 


</script> 

コントローラIndexメソッド -

public ActionResult Index() 
    { 
      HistoryDAL sqlConnection = new HistoryDAL(); 
      List<AdminUsers> adminList = sqlConnection.GetAdminUsers(); 

      //Get the current user 
      var components = User.Identity.Name.Split('\\'); 
      var userName = components.Last(); 

      //Assign current user and admin list to viewbag 
      ViewBag.CurrUser = userName; 
      ViewBag.AdminUserList = adminList; 

      return View("Index"); 

    } 

モデル - アクセスadminusers:

public class AdminUsers 
{ 
    public int AdminID { get; set; } 
    public string AdminDisplayName { get; set; } 
    public string AdminEmailAddress { get; set; } 

} 
+0

adminUserListの値は何ですか? –

+0

@JohnMc私は上記の値を掲示しましたか? –

答えて

2

ライン

for (var i = 0; i < adminUserList.Count; i++) 

では、あなたはadminUserListは、JavaScript変数ではないC#1であるので、むしろC#adminUserList.CountよりはJavaScript adminUserList.lengthを使用する必要があります。

+0

forループは内部でアラートをテストすることでテストされています。しかし、デバッグ時にそのスクリプトでif条件が失敗しています。なぜ私はまだ明確な理由を得ることができません。何か案は? –

+0

どうして失敗ですか? –

+0

if条件でブレークポイントが起動しないので、私はわかりません。私はそれが起こった後にforループ内の警告の後にコードを見ない。 –

関連する問題