繁体   English   中英

如何在ASP.NET MVC控制器中正确发送和处理JSON对象?

[英]How to properly send and handle a JSON object in an ASP.NET MVC controller?

我正在使用ASP.NET MVC 4,并且尝试将JSON对象发送到接受

这是我的JavaScript和jQuery:

var jsonObject = {
    "PlantShipTo":{
        "PlantID" : shipToID.toString()
    }
};

$.ajax({
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    timeout: 15000,
    url: "/Transfer/TransferOut",
    data: JSON.stringify(jsonObject),
    dataType: 'json',
    tradational: 'true',
    success: function (response) {
    }
});

在我的控制器中,我接受下面定义的“ PlantShipTo”类型的对象:

public class PlantShipTo
{
    public int PlantID { get; set; }
}

为简便起见,我将仅显示控制器定义:

public ActionResult TransferOut(PlantShipTo shipto)
{
    PlantShipTo p = shipto;

我希望MVC模型绑定将JSON识别为PlantShipTo对象,但是当我在控制器中检查该对象时,该对象为null。 以下是我的一些请求信息,由Fiddler提供。 JSON看起来与我的“ PlantShipTo”类匹配。 我想念什么?

Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
{"PlantShipTo":{"PlantID":"2"}}

仅当您发送的数据与控制器中指定的参数名称匹配时,MVC才能自动对绑定进行建模。

您可以在JSON中更改根元素的名称以匹配您的参数名称:

var jsonObject = {
    "shipTo":{
        "PlantID" : shipToID.toString()
    }
};

或删除根元素,以便MVC可以自动绑定到参数的属性:

var jsonObject = {
    "PlantID" : shipToID.toString()
};

您的JSON对象不是很正确。 检查一个正确的-

        var jsonObject = {
                "PlantID": YourVariable
        };

        $.ajax({
            url: "@Url.Action("TransferOut")",
            type: "POST",
            data: JSON.stringify(jsonObject),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            error: function (response) {
                alert(response.responseText);
        },
            success: function (response) {
                alert(response);
            }
        });

输出-

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM