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 或类似名称,这样就可以了。
我有以下 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 或类似名称,这样就可以了。