2017-04-04 42 views
2

我有一個問題,我從一個簡單的angularjs頁面發佈對象到MVC核心控制器。MVC核心行動沒有從angularjs POST綁定

雖然對象本身不是空的,這是通常的問題,但我的MVC操作中的對象沒有綁定。

任何人都可以看到我做錯了什麼?

這是我的角服務代碼:

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

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

其由稱爲

,這是POST: enter image description here

最後我的C#MVC核心作用:

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

    return new JsonResult(price); 
} 

雖然張貼的對象不爲空,所有值都被約束: 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; }   
} 

任何人都可以看到我做錯了什麼?

+0

您的.Net PriceRequest對象是如何定義的? – brad

+0

剛剛添加到問題布拉德。任何不是字符串或int的是枚舉 – Simon

+0

「POST」的屏幕截圖缺少正文。身體是什麼樣子? – Liam

回答

1

好了,所以這個帖子的禮貌: Asp.net core MVC post parameter always null

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

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

感謝那些誰試圖幫幫我。

0

嘗試從有角度的priceRequest變量中移除{} {}。

像:

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

我在服務器端的對象變成了null這樣做 – Simon

+0

它不能「變爲null」。你傳遞一個JSON對象作爲參數傳遞給這個函數: this.getQuote =功能(priceRequest){} 通過與{}你包裝一下你的JSON對象在另一個對象,因此它不是」包裹priceRequest t綁定服務器端的身體 – brad

+0

很抱歉編輯到服務器端! – Simon