默认归因路由不起作用

Default attributing routing not working

我正在做一个新项目,我决定单独使用属性路由。这是我的 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 and then the Index method is fired as if i entered the url https://example.com/home/index. I get a blank space when i do say https://example.com

任何人都可以帮助我理解为什么我得到一个空白 space 以及如何使用属性路由设置默认应用程序启动路由?我已经在互联网上冲浪了几个小时,但我什么也摸不着。

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

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();
    }
}

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

试试这个:

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

    ...
}