将“数据 - ”传递给控制器

时间:2015-10-09 08:03:33

标签: asp.net-mvc typescript asp.net-ajax

我有以下代码......

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一直返回“未定义”。在这种情况下,如何传递自定义数据项data-filterString

1 个答案:

答案 0 :(得分:1)

在你的jQuery中,你只能使用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>