MVC 4 API 控制器未接收开机自检数据

MVC 4 APIController not receiving POST data

本文关键字:开机自检 数据 API 控制器 MVC      更新时间:2023-09-26

当然,这已经被处理了很多次了......但。。只是看不出我做错了什么!

这是一个简单的JS脚本,将数据发布回ApiController。

function WebCall(url,parameterObject, callBackFunction) {
this.callbackfunction = callBackFunction;
this.parameterObject = parameterObject;
this.url = url;
self = this;
this.GetData = function () {
 //self = this;   
    $.ajax({
        //dataType: "json",
        type: "POST",
        url: self.url,
        data: JSON.stringify(self.parameterObject),
        contentType: "application/json;charset=utf-8",
        success: function (data) {
            self.callbackfunction.call(this, data);
        },//self.GotData,
        error: function (xhRequest, ErrorText, thrownError)
        {
            alert("error : " + ErrorText)
        },
        complete: function () {},
    })

}

}

正在发送的数据(参数对象)只是

var postData = {
            clientId: id
        }

控制器中的 c# 代码为:

 public class ClientPostObject
{
    public string clientId;
}
public class ClientDetailController : ApiController
{
    [HttpPost]
    public ClientDetailWidgetData GetClient(ClientPostObject clientObject)
    {
        return new ClientModel().GetClientDetail(clientObject.clientId);
    }
}

在谷歌浏览器开发人员工具中,XHR将"表单数据"显示为clientId:A0001 - 所以看起来不错?

无论我尝试什么(我在网络上经历了许多建议),帖子数据都不存在。

当然它很简单....提前谢谢。

除非您计划在其他某个时间点使用完整的表单提交到此方法,否则当您只使用一个属性时,要求模型绑定程序尝试绑定到复杂类型实际上没有意义。将方法签名更改为:

[HttpPost]
public ClientDetailWidgetData GetClient(int clientId) // or whatever type clientId represents
{
    return new ClientModel().GetClientDetail(clientId);
}

我还建议在某个时候(http://getglimpse.com/)添加 Glimpse,以便您可以看到应用程序的模型绑定和/或路由的工作原理。

尝试抛弃contentType,不要stringify data

$.ajax({
    type: "POST",
    url: self.url,
    data: self.parameterObject,
    success: function (data) {...},
    ...
});