【问题标题】:Url Mapping: Don't want to have to type Index in the url网址映射:不想在网址中输入索引
【发布时间】:2012-02-03 01:47:20
【问题描述】:

我在 Global.asax.cs 中有以下 URL 映射:

 routes.MapRoute("RejectRevision", "{controller}/{Index}/{revisionId}"
        , new { controller = "RejectRevision", action = "Index", revisionId = "" });

但我不想输入http://localhost:9999/RejectRevision/Index/1,我希望能够输入http://localhost:9999/RejectRevision/1 以便在RejectRevision 控制器上点击Index 操作。我在这里错过了什么?

谢谢。

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-routing maproute


    【解决方案1】:

    把这个放在你的 Default 路由之前:

    routes.MapRoute(
        "RejectRevision",
        "{controller}/{revisionId}",
        new { 
            controller = "RejectRevision", 
            action = "Index", 
            revisionId = UrlParameter.Optional }
    );
    

    如果将其放在您的 Default 路由之前,/RejectRevision/1 的请求将映射到 RejectRevisionController.Index() 操作方法。

    或者,如果这是您希望像这样映射的唯一 Controller/Action 方法,那么您可以使用文字而不是路由的参数:

    routes.MapRoute( 
        "RejectRevision", 
        "RejectRevision/{revisionId}", 
        new {  
            controller = "RejectRevision",  
            action = "Index",  
            revisionId = UrlParameter.Optional } 
    ); 
    

    【讨论】:

    • 泰。把这个放在默认路由之前有什么意义?
    • @gangelo 把这个放在Default路由之前的意义是因为路由是按顺序分析的,第一个匹配的就是使用的路由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2011-08-11
    • 2014-09-06
    • 2012-06-23
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多