如何在URL中显示没有索引的控制器的索引视图?

时间:2016-06-30 20:32:02

标签: asp.net-mvc asp.net-mvc-5

我有一个带有索引视图的登录控制器,我希望在网址http://sitename/login上呈现。它适用于我浏览到http://sitename/login/index但我想从URL中省略索引。这是我的路线配置(默认):

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

    }

..和控制器:

public class LoginController : Controller
{
    // GET: Login
    public ActionResult Index()
    {
        return View();
    }
}

1 个答案:

答案 0 :(得分:0)

如果您单独离开Default路线,它就会按照您的要求行事。您只需将action路由值的默认值设置为Index

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

或者,您可以插入其他路线来覆盖您的登录控制器。

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

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

第三种方法是将LoginController.Index方法重命名为LoginController.Dashboard_1,因为这是应用程序中每个控制器的默认操作名称。