我想通過一個id
和一個object
,它有四個屬性到動作控制器,但不幸的是它沒有通過,我得到以下錯誤。無法將參數作爲JSON傳遞給mvc控制器
參數字典包含參數提供一個空條目非空類型的「batchID」「System.Int32」的方法「System.Web.Mvc.JsonResult GetItems(的Int32,Ebiquity.Reputation.Neptune.Web。 Models.MyWorkFilterModel)'在'Ebiquity.Reputation.Neptune.Web.Controllers.MyWorkController'中。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。
參數名:參數
的JSON被傳遞是:
{
"batchID": 21610,
"filter":
{
"issueNo": "1",
"messageNo": "2",
"itemDate": "Wed, 05 Feb 2014 00:00:00 GMT",
"mediaName":"3"
}
};
AJAX調用:
self.GetItems = function (batchID, issueNo, messageNo, itemDate, mediaName) {
var filter = {
issueNo: issueNo,
messageNo: messageNo,
itemDate: itemDate,
mediaName: mediaName
};
$.ajax({
type: "GET",
url: "/MyWork/GetItems",
data: JSON.stringify({
batchID: batchID,
filter: filter
}),
dataType: "json",
success: function (result) {
self.Items([]);
if (result.Items != null) {
var tempItems = ko.mapping.fromJS(result.Items, mappingOptions);
self.Items.push.apply(self.Items, tempItems());
}
}
});
};
控制器:
[HttpGet]
public JsonResult GetItems(int batchID, MyWorkFilterModel filter)
{
using (var rep = new WorkRepository(CurrentUser))
{
return Json(rep.GetBatch(batchID, filter), JsonRequestBehavior.AllowGet);
}
}
過濾器型號:
public class MyWorkFilterModel
{
public int? IssueNo { get; set; }
public int? MessageNo { get; set; }
public string MediaName { get; set; }
public DateTime? ItemDate { get; set; }
}
batchID是強制性的,它不爲空,它不會被傳遞到控制器如果失敗空校驗。 – Xerxes