我有以下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。
发生了什么事?
答案 0 :(得分:1)
我认为这与 ReturnUrl 参数名在ASP.NET请求处理管道中有特殊处理的事实有关。请参阅this thread。
中的详情作为一个简单的解决方案,我建议将此参数重命名为 ReturnLink 或类似的,并且应该这样做。