代码之家  ›  专栏  ›  技术社区  ›  Willie

默认归因路由不起作用

  •  0
  • Willie  · 技术社区  · 8 年前

    我正在做一个新项目,我决定只使用属性路由。这是我的RouteConfig文件:

    public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            routes.MapMvcAttributeRoutes();
    
            //routes.MapRoute(
            //    name: "Default",
            //    url: "{controller}/{action}",
            //    defaults: new { controller = "HomeController", action = "Index", id = UrlParameter.Optional }
            //);
        }
    

    这是我的控制器:

    [RoutePrefix("home")]
    public class HomeController : Controller
    {
        [Route]
        [Route("~/")]
        public ActionResult Index()
        {
            var status = HttpContext.User.Identity.IsAuthenticated;
            ViewBag.Title = "Home Page";
    
            return View();
        }
    
        [Route("test")]
        public ActionResult Test()
        {
    
            return View();
        }
    }
    

    我已经意识到,通常我的所有属性都在工作,但我希望Index方法在应用程序启动时运行。说 https://example.com 然后像输入url一样触发Index方法 https://example.com/home/index .当我说 https://example.com .

    有人能帮我理解为什么我会得到一个空格,以及如何使用属性路由设置默认的应用程序启动路由吗?我已经上网好几个小时了,但我什么都摸不着。

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

    在您的情况下,仍应设置默认路线。这样网站就知道从哪里开始。从那以后,其他的一切都应该按照你的预期工作。

    public static void RegisterRoutes(RouteCollection routes) {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
        routes.MapMvcAttributeRoutes();
    
        routes.MapRoute(
            name: "Default",
            url: "{action}",
            defaults: new { controller = "Home", action = "Index" }
        );
    }
    

    这是我的家庭控制器。

    public class HomeController : FrontOfficeControllerBase {
        public HomeController() {
        }
    
        public ActionResult Index() {
            ...
            return View();
        }
    }
    

    除此之外,这使我的路由配置保持干净,因为我在其他地方都使用属性路由。

        2
  •  1
  •   Frank Fajardo    8 年前

    试试这个:

    [RoutePrefix("home")]
    public class HomeController : Controller 
    {
        [Route("index")]
        [Route("~/", Name = "default")]
        public ActionResult Index()
        {
            ...
        }
    
        ...
    }