【发布时间】:2019-09-01 22:45:03
【问题描述】:
我有一个 .NET Core 1.1 的 MVC 架构项目, 并且我想在 URL 不正确时重定向(状态代码:404;未找到)以重定向到我已经创建的错误视图。
在另一个只有一个控制器的项目中,我让它正常工作:
[Route ("/Home/Error")]
public IActionResult Error()
{
ViewBag.Title = "About Us";
return View();
}
[Route("/{a}/{*abc}")]
[HttpGet]
public IActionResult Err(string a)
{
return RedirectToAction("Error", "Home");
}
并在启动阶段:
app.UseMvc(routes =>
{ routes.MapRoute(
name: "Default",
template: "{controller=Home}/{action=GetDocument}/{id?}");
});
但是如果在这个项目中,有 4 个控制器,在启动时使用这个配置:
app.UseMvc(routes =>
{ routes.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "IndexB" }
);
);
HomeController 或所有控制器上的这段代码(我都试过了):
[Route("/Home/Error")]
public IActionResult Error()
{
ViewBag.Title = "About Us";
return View();
}
[Route("/{a}/{*abc}")]
[HttpGet]
public IActionResult Err(string a)
{
return RedirectToAction("Error", "Home");
}
在另一个项目中的第一个代码就像一个魅力,它去它必须去的地方,但不存在的 URL 去错误页面。
但是在这个项目中使用第二个代码,无论如何我总是被重定向到错误页面。
【问题讨论】:
-
为什么还是
.NET Core 1.1??更新到2.2 -
我正在一家公司实习,我必须这样做,但我无法改变这一切,因为工作量很大而且我没有相关知识。 @TanvirArjel
标签: asp.net asp.net-mvc asp.net-mvc-routing