0
我有一個服務調用,它從我們的數據庫中獲取一組已過濾的歷史記錄。將複雜對象傳遞給MVC api爲空
我有一些麻煩讓我的過濾器,使其對我的主要mvc電話。
[AcceptVerbs("POST")]
public History History(HistoryFilters filters){......}
config.Routes.MapHttpRoute(
name: "DefaultActionRoute",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional}
);
amplify.request.define('post', 'ajax', {
url: '/api/{controller}/{action}',
dataType: 'json',
type: 'POST',
cache: cache
});
//History Filter js
{
DateRange: { Start: ..., End: ...},
BetStatus: "unresolved",
TransactionTypes: "bets"
}
每次我讓我的電話過濾器填充空值。 JS過濾器結構與我在C#中的HistoryFilters類的結構相匹配。如果我JSON.stringify我的過濾器,並將我的Api調用改爲字符串,然後我明白,但它會很好,如果它可以將它轉換爲我。
有誰能告訴我我錯過了什麼嗎?
編輯
var amp = function(id, data) {
return $.Deferred(function(dfd) {
amplify.request({
resourceId: id,
data: data,
success: dfd.resolve,
error: dfd.reject
});
}).promise();
};
History: function (filters) {
return amp('post', { controller: 'user', action: 'history', '':filters});
}
public class HistoryFilters
{
public DateFilter DateRange { get; set; }
public string BetStatus { get; set; }
public string TransactionTypes { get; set; }
}
public class DateFilter
{
public string Start { get; set; }
public string End { get; set; }
}
提供'HistoryFilters'定義和'amplify.request()'代碼。可能的解決方案1.在'amplify.request.define'中添加設置「contentType:'application/json'」。 2.在數據參數中發送字符串化數據'JSON.stringify(historyFilters)'。 – shakib 2013-04-30 06:02:44