如何从checklistbox MVC Razor获取检查项目

时间:2015-04-28 12:15:16

标签: c# jquery asp.net-mvc-4 razor checkedlistbox

在div中,我在CheckBoxList中使用CheckBoxListFor有一些MVC Razor。我想按下按钮以检查所有复选框的值。怎么做?

 <div class="col-md-4">
                <label for="" class="control-label">
                    Branch</label><br />
                @Html.CheckBoxListFor(m => m.SearchBranchSeq,MultiSelectList)Model.SearchBranches, new {@id="SearchBranches", @style = "overflow: auto; height: 100px; width: 250px; border: 1px solid #cccccc;" })

            </div>

我尝试了以下内容,

var SearchBranchSeq = [];
    $('input:checkbox').click(function () {
      if ($(this).is(':checked')) {
            SearchBranchSeq.push($(this).val());
      }
      else {
            var x = SearchBranchSeq.valueOf($(this).val());
            SearchBranchSeq.splice(x, 1);

      }
  });

它正常工作,但当我从SearchBranchSeq取消选中复选框时,我无法删除CheckBoxList中的值。任何人都可以帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:1)

您需要在阵列上使用indexOf()而不是valueOf()。正如indexOf()中所述,Internet Explorer 9+和其他现代浏览器中都定义了这一链接。

// IE Old
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
        for (var i = (start || 0), j = this.length; i < j; i++) {
            if (this[i] === obj) { return i; }
        }
        return -1;
    }
}
// End IE Old - not needed if old IE is not supported

var x = SearchBranchSeq.indexOf($(this).val());
SearchBranchSeq.splice(x, 1);