当我问这个问题时,我主要是在考虑错误的参数。参数,其中:
int
<= 0string
为空或空格- 模型绑定(bind)对象缺少关键属性
- “id not found errors”(一个“有效”的整数 id 被传递给操作,但是没有相应的数据库记录)
这是我正在谈论的两种错误处理场景:
public ActionResult GoToError(int value, string name)
{
if (value <= 0 || string.IsNullOrWhiteSpace(name))
{
// Parameter(s) not meeting basic conditions
TempData["ErrorMessage"] = "Invalid parameters";
return RedirectToAction("Index", "Error");
}
return View();
}
public ActionResult ReturnView(int value, string name)
{
if (value <= 0 || string.IsNullOrWhiteSpace(name))
{
// Parameter(s) not meeting basic conditions
ViewData["ErrorMessage"] = "Invalid parameters";
return View("Error");
}
return View();
}
最佳答案
有不同的场景,需要以不同的方式处理:
- 对于您没有预料到的完全意外错误,我建议让异常冒泡并在
Controller.OnException(...)
method 中处理它和/或 asp.net custom error pages - 对于常见的预期错误,例如用户提供错误输入,返回 View 并显示通过 ModelState.Errors 传递的错误是正确的
- 如果该操作旨在通过 AJAX/Javascript/作为服务调用,您需要协调发回的内容。它可以是自定义 JSON 对象或特定 View 。
根据您发布的内容,我无法将天气分类为“预期”或“意外”。主要问题是,这些调用的客户希望如何处理它们?
关于c# - 在 ASP.NET MVC 中,我应该重定向到错误页面还是只返回错误 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8186955/