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. Несмотря на то, что при отладке значение не равно нулю. Он возвращает это:

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

Как ни странно, если я изменю значение CreateAnother на true, это сработает и пройдет как true, но ReturnUrl по-прежнему будет нулевым, и я подтверждаю в самом посте, что данные есть, а не нулевые.

Что происходит?


person SventoryMang    schedule 23.04.2018    source источник


Ответы (1)


Я думаю, это связано с тем, что имя параметра ReturnUrl имеет специальную обработку в конвейере обработки запросов ASP.NET. Подробнее см. в этой теме.

В качестве простого решения я бы предложил переименовать этот параметр в ReturnLink или аналогичный, и это должно сработать.

person Andrei    schedule 23.04.2018