【问题标题】:Bootstrap Selectpicker multiselect doesn't keep selection after submitBootstrap Selectpicker多选在提交后不保留选择
【发布时间】:2017-05-26 16:11:25
【问题描述】:

我正在使用引导选择器作为多选下拉菜单来过滤 mvc5 Web 应用程序中的表项。到目前为止一切正常,但我在提交后无法保持选中的过滤器。所以我可以在控制器中读取选定的过滤器,但在那之后,只有第一个先前选择的过滤器在提交后仍然显示为选中状态。我希望所有选择的过滤器仍然被选中。我怎样才能做到这一点?

这是我的代码,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 知识知之甚少,我假设我可以在 js 脚本中解决它。我希望这里有一些专家。谢谢!

【问题讨论】:

    标签: c# jquery multi-select asp.net-mvc-5 bootstrap-selectpicker


    【解决方案1】:

    我的一位同事找到了一个解决方案,这是可行的:

            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();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 2015-01-20
      • 1970-01-01
      • 2013-11-24
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      相关资源
      最近更新 更多