【发布时间】:2018-04-17 08:40:38
【问题描述】:
我有一个包含区域的项目,并希望将视图模型作为 JSON 发布到控制器方法。
这就是我所拥有的,在默认区域中生成性能并传递到区域SeatSelection中的视图:
$("#addToCartButton").click(function () {
var json = @Html.Raw(Json.Encode(performance));
$.ajax({
url: 'https://@(Request.Url.Host)/SeatSelection/Home/AddToCart',
type: 'POST',
dataType: 'json',
data: json,
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
});
以及测试的动作方法:
[System.Web.Http.Route("SeatSelection_AddToCart")]
[System.Web.Http.HttpPost]
public JsonResult AddToCart(PerformanceViewModel performance)
{
return Json(performance.Name);
}
我创建了以下路线:
context.MapRoute(
"SeatSelection_AddToCart",
"SeatSelection/Home/AddToCart",
new { action = "AddToCart", controller = "Home", id = UrlParameter.Optional },
namespaces: new string[] { "myProject.Areas.SeatSelection.Controllers" }
);
但我得到的只是内部服务器错误 500。我还尝试使用 [FromBody] 并为该方法设置断点,但它没有被调用。我无法弄清楚有什么问题或遗漏,请帮忙。
更新 这是json/性能:
PerformanceID=00000000-0000-0000-0000-000000000000&Name=Performance+15&StartDate=%2FDate(1360364400000)%2F&EndDate=%2FDate(1500328800000)%2F&LatestDateBookable=%2FDate(1450911600000)%2F&Organizer=Organizer+15&Location=Location+15&Availability=75&IsFull=false&IsBookable=true&HasPrice=true&BookableSeats=11&BookedSeats=94&Description=Description+of+Performance+15&Price=443
我发现一个错误:“无效的 json 原语:performanceid”
【问题讨论】:
-
我猜
return Json(performance.Name);会生成一个空引用异常(并返回 500 内部服务器错误),因为performance可能为空。您能否添加一个发送到服务器的 JSON 示例?
标签: json asp.net-mvc