json - ASP MVC 区域和 JSON POST

标签 json asp.net-mvc

我有一个包含区域的项目,并且想将 View 模型作为 JSON 发布到 Controller 方法。

这就是我所拥有的,性能在默认区域中生成并传递到区域中的 View 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”

最佳答案

首先,我建议您使用 @Url.Action 辅助方法,而不是像这样生成 url:https://@(Request.Url.Host)/SeatSelection/Home/AddToCart.

其次,始终验证来自浏览器的参数。 return Json(performance.Name) 看起来很可疑。什么是性能将为空?这可能是您的内部服务器错误 500 的问题。

如果这不是问题,则尝试将字符串而不是 JSON 发送到服务器,并在服务器端验证和解析 JSON。

关于json - ASP MVC 区域和 JSON POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873492/

相关文章:

javascript - AngularJS - 如何过滤嵌套的 json 数组

javascript - 将 JSON 字符串转换为对象并显示为 HTML 表格

asp.net-mvc - 用于 View 和布局的 Asp.net MVC 模型

asp.net-mvc - 在每个 Visual Studio 应用程序发布上重置 IIS 应用程序池标识权限

asp.net - 在社区驱动的站点中计算评分/分数

c# - Razor 和防伪

arrays - 在 Postgres 中过滤顶级 JSONB 数组文档?

json - 带有 Aeson 的任意 JSON 键 - Haskell

java - 无法找到明确的方法 : class com. fastxml.jackson.databind.node.ArrayNode.get(java.lang.Long)

c# - ASP.NET/MVC + MvcMockHelpers + RhinoMocks,谁设置RouteData?