【发布时间】:2012-07-02 15:22:44
【问题描述】:
设置: ASP.NET MVC3、jQuery、C#
有没有人有一个干净的解决方案来处理从同一操作方法返回的不同部分视图?一个用于下一阶段,一个用于再次返回带有验证错误的视图,另一个用于显示未处理的异常。
我有一个 控制器方法,它执行以下操作:
public ActionResult SomeMethod(MyModel model)
{
if(_service.Validate(model))
{
if(_service.Update(model))
{
// return next view once success
return PartialView("EverythingIsGood"); // This should be pushed into #somediv
}else{
throw new HardException("Tell the client something bad has happened");
}
}
else
{
// Return the same view to highlight the validation errors
HttpContext.Response.StatusCode = 500;
return PartialView("SomeMethod", model); // This should be pushed into #anotherdiv
}
}
客户端脚本
$.ajax({
url: baseUrl + "Home/SomeMethod",
type: "GET",
success: function (data) {
$("#somediv").html(data);
},
error: function (data) {
handleError(data);
}
});
我想我需要类似 softerror 的东西:
$.ajax({
url: baseUrl + "Home/SomeMethod",
type: "GET",
success: function (data) {
$("#somediv").html(data);
},
softerror: function (data) {
$("#anotherdiv").html(data);
},
error: function (data) {
handleError(data);
}
});
我在考虑可能会为软验证错误返回不同的状态代码,但这感觉很麻烦。
【问题讨论】:
-
为什么返回不同的状态码会很麻烦? 400“错误请求”将是返回验证错误的正确结果。
标签: asp.net-mvc asp.net-mvc-3 jquery