MVC JsonResult,无法返回一个对象,属性总是以null结尾

时间:2018-04-23 16:40:23

标签: ajax asp.net-mvc jsonresult

我有以下MVC操作:

[HttpPost]
    public JsonResult Save(Guid? id, LabSaveModel labSaveModel)
    {
        labSaveModel = id == null ? Create(labSaveModel) : Update((Guid) id, labSaveModel);
        _labService.SetActionMessage(labSaveModel, true);

        return Json(new JsonLabModel(){ CreateAnother = labSaveModel.CreateAnother, ReturnUrl = labSaveModel.ReturnUrl}, JsonRequestBehavior.DenyGet);
    }

以下AJAX:

$.ajax({
            url: '@Url.Action("Save", "Labs")',
            type: 'POST',
            data: mappedModel.dataToPost(),
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            success: function(data) {
                   //do stuff
            }
 });

但每次检查成功方法的数据时,ReturnUrl为null。尽管在调试时该值不为null。它返回:

{"CreateAnother":false,"ReturnUrl":null}

奇怪的是,如果我将CreateAnother值更改为true,那么它可以正常传递,但ReturnUrl仍为null,我在帖子本身确认数据是否存在而不是null。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

我认为这与 ReturnUrl 参数名在ASP.NET请求处理管道中有特殊处理的事实有关。请参阅this thread

中的详情

作为一个简单的解决方案,我建议将此参数重命名为 ReturnLink 或类似的,并且应该这样做。