将 "data-" 传递给控制器

Passing "data-" to controller

我有以下代码...

HTML:

<button type="button" class="btn btn-primary" id="filterData" 
    data-filterString="@Model.LastName">Filter</button>

打字稿:

$("button[id='filterData']").click(() => {
      var dataList = [];
      var filter = $(this).data("filterString");
      $("input[class='personRecord']").each(function() {
         dataList.push($(this).val());
      });
      var parameters = JSON.stringify({ "filterString": filter, "dataList":paymentList });
      $.ajax({
         url: "/Employee/FilterName",
         data: parameters,
         type: "POST",
         contentType: "application/json; charset=utf-8",
         success: function () {
            alert("Success");
         }
      });
   });

控制器:

[HttpPost]
public void SendAll(string filterString, List<string> dataList) {
    ...
}

然而,变量 filter 一直返回 "undefined"。您如何传递自定义数据项,data-filterString 在这种情况下?

在您的 jQuery 中,即使您的属性是 upper/mixed 大小写,您也只能为 data 方法使用小写值。所以你应该写:

var filter = $(this).data("filterstring");

如果您确实在密钥中使用大小写混合,jQuery 会将其转换为虚线变量,因此当您搜索 filterString 时,您的属性应称为 data-filter-string

$(function() {
  console.log($('#test').data('filterstring'));
  console.log($('#test').data('filterString'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="test" data-filterString="value1" data-filter-string="value2"></div>