【问题标题】:The Data Parameters values of .ajax() method is not passed to the C# function in asp.net core 2.0.ajax() 方法的数据参数值未传递给 asp.net core 2.0 中的 C# 函数
【发布时间】:2018-05-09 12:45:16
【问题描述】:

我在 asp.net core 2.0 中进行了一个非常简单的 ajax() 方法 调用。它只是从视图中调用控制器函数。它还使用 data 参数传递值。

正在调用 C# 函数,但 控制器函数参数接收值

代码:

var idChecked = 5;
$.ajax({
    type: "POST",
    url: "/BlogCategory/UpdateBulkStatus",
    contentType: "application/json; charset=utf-8",
    data: '{"idChecked":"' + idChecked + '"}',
    dataType: "html",
    success: function (msg) {

    },
    error: function (req, status, error) {

    }
});

控制器功能

public string UpdateBulkStatus(string idChecked)
{
  return "abc";
}

idChecked 变量始终为空。

怎么了?相同的代码适用于 MVC 5,但不适用于核心?

【问题讨论】:

  • 只需使用data: { idChecked: idChecked }, 并删除contentType: "application/json; charset=utf-8", 并且由于您传递的是int,因此您的参数应该是int,而不是string
  • 谢谢@StephenMuecke。我更改了数据 data: { idChecked: idChecked } 并删除了 contentType ,就像你说的那样。它现在起作用了。它以前在 MVC 5 上工作,但在核心 2.0 上停止工作。

标签: jquery asp.net ajax asp.net-mvc asp.net-core-mvc


【解决方案1】:

您传递的数据是一个对象而不是字符串,模型绑定器正在“猜测”它来自哪里。使用属性标记要绑定的参数位置,并准确匹配数据。

public string UpdateBulkStatus([FromBody]BulkStatus bulkStatus)
{
   return bulkStatus.idChecked;
}

public class BulkStatus
{
     public string idChecked {get;set;}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多