Asp.net mvc MVC 4路由列表页和详细信息页

Asp.net mvc MVC 4路由列表页和详细信息页,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我必须做一个'黑客周围'得到简单的路由工作,因为我需要 site.com/Event <--- controller = Event, action = Index site.com/Event/{id} <--- controller = Event, action = Details site.com/About <--- using default router settings 是否有更好的方法来编写事件和Event/{id} 更新-工作代码 { ro

我必须做一个'黑客周围'得到简单的路由工作,因为我需要

site.com/Event   <--- controller = Event, action = Index

site.com/Event/{id}   <--- controller = Event, action = Details

site.com/About   <--- using default router settings
是否有更好的方法来编写事件和Event/{id}

更新-工作代码

{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapHttpRoute(
    name: "WebDefaultApi",// renamed WebDefaultApi to avoing unique name conflict in API DefaultApi
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

routes.MapRoute(
    "Details",
    "{controller}/{id}",
    new { controller = "Event", action = "Details" },
    new { id = @"^\d+$" }
);


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

将Id设为必需且为整数。此外,由于这是更具体的,所以必须首先考虑

routes.MapRoute(
                "Details",
                "{controller}/{id}",
                new { controller = "Event", action = "Details" },
                new { id = @"^\d+$" }
            );

routes.MapRoute(
                "Default",
                "{controller}",
                new { controller = "Home", action = "Index" }
            );
此外,如果您只希望此路由应用于特定控制器,则可以限制:

routes.MapRoute(
                "Details",
                "{controller}/{id}",
                new { controller = "Event", action = "Details" },
                new { id = @"^\d+$", controller= @"(event|news|resources)" }
            );

将Id设为必需且为整数。此外,由于这是更具体的,所以必须首先考虑

routes.MapRoute(
                "Details",
                "{controller}/{id}",
                new { controller = "Event", action = "Details" },
                new { id = @"^\d+$" }
            );

routes.MapRoute(
                "Default",
                "{controller}",
                new { controller = "Home", action = "Index" }
            );
此外,如果您只希望此路由应用于特定控制器,则可以限制:

routes.MapRoute(
                "Details",
                "{controller}/{id}",
                new { controller = "Event", action = "Details" },
                new { id = @"^\d+$", controller= @"(event|news|resources)" }
            );

{id}
始终是数字还是遵循某种类型的模式?是否有理由将
url
中的“事件”替换为两条路径中的
{controller}
都不起作用?我遗漏了什么吗?我用{controller}替换了它。。现在不工作。
{id}
始终是数字还是遵循某种类型的模式?是否有原因将
url
中的“事件”替换为两个路由中的
{controller}
不起作用?我遗漏了什么吗?我用{controller}替换了它。。现在不工作。默认操作不应该是“详细信息”吗?我看不到“详细信息”操作?当我的示例有{controller}/{action}/{id}时,为什么有{controller}/{id}?因为您想“有事件、新闻、资源和更多页面,每个页面都有详细信息页面(新闻/{id},等等)”。这将适应这种情况requirement@QuetiM.Porta您有
url:“{controller}/{action}/{id}”
但我不想在url中有
action
。。只有控制器和id。默认操作不应该是“Details”吗?我看不到“Details”操作?当我的示例有{controller}/{action}/{id}时,为什么有{controller}/{id}?因为您想“有事件、新闻、资源和更多页面,每个页面都有详细页面(新闻/{id},等等)”。这将适应这种情况requirement@QuetiM.Porta您有
url:“{controller}/{action}/{id}”
但我不想在url中有
action
。。只有控制器和id。