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

时间:2009-08-14 02:21:10

标签: asp.net-mvc-routing

当我有一个带有一个参数的路由时,我遇到了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 个答案:

答案 0 :(得分:1)

首先,您应该将最通用的路线放在最底层。

然后,做如下的事情:

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

这样,materias路线仅适用于材料控制器。 (未经测试)

修改 嗯...尝试使用马丁的例子加上一小部分:

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

答案 1 :(得分:0)

使用:

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