当我有一个带有一个参数的路由时,我遇到了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>
此链接位于另一个用于管理用户数据的页面上。
答案 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" });