代码之家  ›  专栏  ›  技术社区  ›  vasily.sib

RouteAttribute破坏了我的默认路线

  •  -2
  • vasily.sib  · 技术社区  · 7 年前

    如果我申请 为了执行操作(我将其用作默认站点路由),我在访问站点根时获得HTTP 404。

    例如:

    • 添加属性路由:

      // file: App_Start/RouteConfig.cs
      public class RouteConfig
      {
          public static void RegisterRoutes(RouteCollection routes)
          {
              routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
              routes.MapMvcAttributeRoutes(); // Add this line
              routes.MapRoute(
                  name: "Default",
                  url: "{controller}/{action}/{id}",
                  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
              );
          }
      }
      
    • 添加路由属性

      [RoutePrefix("Zome")]
      public class HomeController : Controller
      {
          [Route(Name = "Zndex")]
          public ActionResult Index()
          {
              return View();
          }
          ...
      }
      

    2 回复  |  直到 7 年前
        1
  •  2
  •   Nkosi    7 年前

    ~/

    [RoutePrefix("Zome")]
    public class HomeController : Controller {
        [HttpGet]
        [Route("", Name = "Zndex")]      //Matches GET /Zome
        [Route("Zndex")]                 //Matches GET /Zome/Zndex
        [Route("~/", Name = "default")]  //Matches GET /  <-- site root
        public ActionResult Index() {
            return View();
        }
        //...
    }
    

    也就是说,当在控制器上使用属性路由时,它不再匹配基于约定的路由。控制器要么基于所有属性,要么基于所有约定,不混合。

    Attribute Routing in ASP.NET MVC 5

        2
  •  0
  •   Joshua Morgan    7 年前

    当您启动站点时,路由中设置了默认路由。App_Start文件夹中的配置文件。它看起来像这样:

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );