为什么 web root 在 ASP.Net MVC 5 中给出 404
Why does web root give a 404 in ASP.Net MVC 5
我有一个 ASP.Net MVC 5 站点,我在其中更改了 Home 控制器中的路由以删除 Home 部分。
我的家庭控制器看起来像
[Route("Index")]
public ActionResult Index()
{
ViewBag.Title = "Home";
ViewBag.Current = "Home";
return View();
}
当我转到 http://localhost:29033/Index but when I go to http://localhost:29033 时效果很好,但出现以下错误:
在控制器 'MyProject.Controllers.HomeController' 上未找到 public 操作方法 'Index'。
我的 RegisterRoutes 看起来像:
public static void RegisterRoutes(RouteCollection routes)
{
routes.LowercaseUrls = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("elmah.axd");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
如有任何帮助,我们将不胜感激。
鉴于此处似乎使用了属性路由,我认为您需要更新路由以获得所需的行为
[RoutePrefix("home")]
public class HomeController : Controller {
[Route("Index")] // Matches GET home/index
[Route("~/", Name = "root")] //Matches GET /
public ActionResult Index() {
//...code removed for brevity
}
}
我有一个 ASP.Net MVC 5 站点,我在其中更改了 Home 控制器中的路由以删除 Home 部分。
我的家庭控制器看起来像
[Route("Index")]
public ActionResult Index()
{
ViewBag.Title = "Home";
ViewBag.Current = "Home";
return View();
}
当我转到 http://localhost:29033/Index but when I go to http://localhost:29033 时效果很好,但出现以下错误:
在控制器 'MyProject.Controllers.HomeController' 上未找到 public 操作方法 'Index'。
我的 RegisterRoutes 看起来像:
public static void RegisterRoutes(RouteCollection routes)
{
routes.LowercaseUrls = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("elmah.axd");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
如有任何帮助,我们将不胜感激。
鉴于此处似乎使用了属性路由,我认为您需要更新路由以获得所需的行为
[RoutePrefix("home")]
public class HomeController : Controller {
[Route("Index")] // Matches GET home/index
[Route("~/", Name = "root")] //Matches GET /
public ActionResult Index() {
//...code removed for brevity
}
}