0

マルチセレクションドロップダウンメニューにブートストラップ選択ピッカーを使用して、mvc5ウェブアプリケーション内のテーブル項目をフィルタリングしています。これまでのところすべてうまく動作しますが、送信後に選択したフィルタを選択したままにするのは問題です。したがって、コントローラで選択したフィルタを読み取ることはできますが、それ以降は、以前に選択された最初のフィルタのみが、送信後に選択済みとして表示されます。選択したすべてのフィルタを選択しておきたい。どのように私はこれに到達できますか?ブートストラップselectpickerマルチセレクションがサブミット後も選択を維持しない

私のコードイストここ

、ViewModelには含まれています

 public MultiSelectList AvailableUser_ID { get; set; } 

     private List<string> _selectedUserId = new List<string>(); 
     public List<string> SelectedUserId 
     { 
      get { return _selectedUserId; } 
      set { _selectedUserId = value; } 
     } 

コントローラ(ポスト):

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Index([Bind(Include = "SelectedUserId,SelectedUserInteractionTypesId")] IndexUserInteractionViewModel indexUserInteractionViewModel) 
    { 
     indexUserInteractionViewModel.UserInteractionViewModels = new List<UserInteractionViewModels>(); 
     indexUserInteractionViewModel.AvailableUser_ID = new MultiSelectList(db.AspNetUsers.ToList(), "Id", "Email", indexUserInteractionViewModel.SelectedUserId); 

    // Filter Function: selectedUserId contains all the Ids of the previously selected filters 
    foreach (string selectedUserId in indexUserInteractionViewModel.SelectedUserId) 
    { 
     if (userInteraction.AspNetUsers_Id.Equals(selectedUserId)) 
      // ... 
    } 
} 

とビュー:

<script type="text/javascript"> 

    $(document).ready(function() { 
     $('.selectpicker').selectpicker(); 
    }); 

</script> 

<th>@Html.DropDownListFor(Model => Model.SelectedUserId, Model.AvailableUser_ID as MultiSelectList, new { @id = "userFilter", @class = "selectpicker", @multiple = "mulitple", data_live_search = "true" })</th> 

それでは、どのように私は保つことができます選択を選択しましたか?

残念ながら私はjs-knowledgeがほとんどなく、js-scriptで解決できると仮定しています。私はここでいくつかの専門家が欲しいと思っています。ありがとうございました!

答えて

0

私の同僚が、これはどのような作品で、解決策を見つけた:

 var selectedList = @Html.Raw(Json.Encode(Model.SelectedUserId)); 
     if(selectedList.length > 0){ 
      var result = '['; 
      for (i = 0; i < selectedList.length; i++) { 
       result += '"' + selectedList[i] + '",'; 
      } 
      result = result.slice(0, -1); //remove last comma 
      result += ']'; 

      $('.selectpicker').selectpicker('val', JSON.parse(result1)); 
     }else{ 
      $('.selectpicker').selectpicker(); 
     } 
関連する問題