MVC Core Action没有绑定angularjs POST

时间:2017-04-04 14:22:25

标签: angularjs asp.net-core-mvc

我遇到的问题是我从一个简单的angularjs页面将对象发布到MVC Core控制器。

我的MVC操作的对象没有绑定,尽管对象本身不是null,这是常见的问题。

谁能看到我做错了什么?

这是我的角度服务代码:

this.getQuote = function (priceRequest) {
    return $http.post('/quote/getcost', { priceRequest });
};

由以下人员调用:

quoteService.getQuote(this.quoteData).then(function (cost) {
    $scope.quoteData.quoteCost = cost.data;
});

其中this.quoteData是:

$scope.quoteData = {
                detailLevel: '0',
                fileLengthHours: 0,
                fileLengthMinutes: 1,
                excessiveSpeakersCount: 1,
                industry: null,
                deliveryTime: '1',
                additionalInformation: '',
                quoteCost: null
            };

这是有效载荷 enter image description here

这是POST: enter image description here

最后我的C#MVC核心行动:

[HttpPost]
public JsonResult GetCost([FromBody]PriceRequest priceRequest)
{
    var price = _priceCalculator.GetPrice(priceRequest);

    return new JsonResult(price);
} 

虽然发布的对象不为null,但没有绑定任何值: enter image description here

这是PriceRequest对象:

public class PriceRequest
{
    public JobDetailLevel DetailLevel { get; set; }

    public int FileLengthHours { get; set; }

    public int FileLengthMinutes { get; set; }

    public int? ExcessiveSpeakersCount { get; set; }

    public JobIndustry Industry { get; set; }

    public JobDeliveryTime DeliveryTime { get; set; }

    public string AdditionalInformation { get; set; }        
}

谁能看到我做错了什么?

2 个答案:

答案 0 :(得分:1)

好的,这篇帖子很有礼貌: Asp.net core MVC post parameter always null

我需要将它添加到我的startup.cs:

.AddJsonOptions(jsonOptions =>
{
  jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
});

感谢那些试图提供帮助的人。

答案 1 :(得分:0)

尝试从角度侧的priceRequest变量周围删除 {}

像:

return $http.post('/quote/getcost', priceRequest);