MVC JsonResult,不能 return 一个对象,属性 总是以 null 结束

MVC JsonResult, can't return an object, property always ends up null

我有以下 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 都是空的。尽管在调试时该值不为空。它returns这个:

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

奇怪的是,如果我将 CreateAnother 值更改为 true,它可以正常工作并通过 true,但 ReturnUrl 仍然为 null,并且我在 post 本身上确认数据存在而不是 null。

这是怎么回事?

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

中查看更多内容

作为一个简单的解决方案,我建议将此参数重命名为 ReturnLink 或类似名称,这样就可以了。