Model view controller 在MVC控制器中重定向到另一个不工作的控制器
Model view controller 在MVC控制器中重定向到另一个不工作的控制器,model-view-controller,Model View Controller,大家好,我是MVC的新手,但我以前编程过。我已经设置了一个错误控制器 当主控制器中发生错误时可以调用。我的目标是有一个错误视图,我可以传递相关的错误消息 在下面的代码中,当产品列表中没有返回任何记录时,我调用错误控制器来显示索引视图 这是我的主控制器 public ActionResult Details(int ProductID) { var model = db.Get(ProductID); if (model == nul
大家好,我是MVC的新手,但我以前编程过。我已经设置了一个错误控制器 当主控制器中发生错误时可以调用。我的目标是有一个错误视图,我可以传递相关的错误消息
在下面的代码中,当产品列表中没有返回任何记录时,我调用错误控制器来显示索引视图
这是我的主控制器 public ActionResult Details(int ProductID)
{
var model = db.Get(ProductID);
if (model == null)
{
//return RedirectToAction("Index", "ErrorController");
return errorController.Index("Record not Found", "The Product you are looking for is no longer available");
}
return View(model);
}
这是它成功调用的错误控制器
public ActionResult Index(string errorTitle, string errorMessage)
{
ViewBag.ErrorTitle = errorTitle;
ViewBag.ErrorMessage = errorMessage;
return View();
}
此时调用索引操作结果并返回视图,但也调用来自原始控制器的详细信息视图,这会导致错误,因为没有记录。
因此,不会显示我的错误视图。
如何阻止调用原始详细信息视图?
任何帮助都会很好
谢谢你试试这个-
return RedirectToAction("Index", "Error", new {
ErrorTitle = "Record not Found",
ErrorMessage = "The Product you are looking for is no longer available"
});
您基本上需要重定向到错误控制器,并作为路由的一部分传入参数。RedirectToAction的参数为RouteValue
此外,您不需要“ErrorController”,只需使用“Error”
好的,因此通常在.net中,您不希望通过这样的重定向来传递错误,相反,您应该使用像Vereyon.Web FlashMessageCore这样的库,它将帮助您以简单简洁的方式将错误重定向到用户
但是,如果您想这样做(完全正确),您仍然需要在重定向到操作调用中传递错误标题和错误消息,如下所示:
return RedirectToAction("Index", "Error", new {errorTitle="error", errorMessage="message"});
谢谢你的建议,我实际上只是在为一个测试构建一个小应用程序,所以我试图让它尽可能的通用和简单。但这是一种享受。谢谢