【发布时间】:2014-06-11 21:25:22
【问题描述】:
我们的 MVC 控制器继承自删除响应的自定义控制器(对于 PRG 模式):
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.HttpContext.Request.HttpMethod != @"GET")
{
Response.Clear();
}
}
在客户端,我正在做一个简单的保存到数据库:
var success = function (result) {
showNotification(result.Message, 'success', 3000);
hrp.load();
}
var inputArray = $(hoursForm + ' [name], ' + hoursFormId);
postAjaxArrayData('RoundingPolicies/SaveHoursRoundingPolicy', inputArray, success);
这使得控制器很好,保存,但由于我们正在清除响应,success() 没有从以下位置返回结果:
public void SaveHoursRoundingPolicy(HoursRoundingPolicyViewModel hoursRoundingPolicyViewModel) {
// Save
var json = new {
hoursRoundingPolicyViewModel.RoundingPolicyId,
hoursRoundingPolicyViewModel.Name,
Message = String.Format("Successfully Saved - ({0}) {1}", hoursRoundingPolicyViewModel.RoundingPolicyId, hoursRoundingPolicyViewModel.Name)
};
return Json(json);
}
我们如何仍然实现 PRG 模式(通过清除 POST 上的响应)但仍然从 Ajax POST 返回结果?我可以在 OnResultExecuted() 中区分这两者吗?
我想这对于任何使用带有 MVC 的 PRG 模式的人来说都是一个相当普遍的场景,有什么想法吗?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 http-post