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

ASP.NET-MVC中自定义路由的问题

  •  0
  • Cleiton  · 技术社区  · 15 年前

    当我有一个包含一个参数的路由时,我在Html.ActionLink上遇到了问题。 我在global.asx中有以下路由器:

            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
            routes.MapRoute(
                "materias",
                "{controller}/{action}/{id},{titulo_materia}.html",
                new { controller = "materias", action = "Index", id = "", titulo_materia = "" }  
            );
    

    当我使用ActionLink传递两个参数时,一切正常。

    http://meusite.com/controller-name/[parameter],.html

    编辑:

    以下是我遇到问题的行动链接:

    <span class="editar"><%=Html.ActionLink("Editar", "Edit", "Users", new { id = this.Model.login }, null)%></span>
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   sirrocco    15 年前

    首先,你应该把最普通的路线放在底部。

    那么,做一些类似的事情怎么样:

        routes.MapRoute(
            "materias",
            "{materias}/{action}/{id},{titulo_materia}.html",
            new { controller = "materias", action = "Index", id = "", titulo_materia = "" }  
        );
    
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );
    

    这样,Materials路由仅适用于Materials控制器。(未测试)

    编辑: htmm。。尝试使用martin的示例,并添加一点内容:

    Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action",id = this.Model.login });
    
        2
  •  0
  •   Martin    15 年前

    使用:

    Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action" });