2012-04-07 131 views
3

我遇到了html.actionlink的问题。 我定义了两个途径:asp.net mvc actionlink使用错误的路由

routes.MapRoute(
       "AdminDefault", 
       "Admin/{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}", 
       new { controller = "Page", action = "Details", id = "0" } 
      ); 

的ActionLink的使用AdminDefault,当我想它使用默认的控制器。我如何在不使用routelink的情况下使用默认路由?

添加更多信息。我有一个简单的动作(家庭/索引),它显示了一个视图(index.cshtml),在该视图中,我有:

@Html.ActionLink("About", "About", "Home") 

产生的“/管理/首页/关于”当我想一个url它是“/首页/关于”defaultadmin路由是这样,我可以创建以后的任何管理页面的/管理/控制器/行动的链接,但我想默认生成的网址不在管理下。

回答

2

如果您从一个区域中的视图使用Html.ActionLink,那么默认情况下它会将区域传递到该链接。

要覆盖这一点,你可以调用Html.ActionLink像这样:

@Html.ActionLink("linkText", "actionName", "controllerName", new {Area = "AreaName"}, null); 

其中“新{面积=‘AREANAME’}”的路由对象值 和“空”是HTML属性。

因此,您可以使用'new {Area =“”}'

+0

我不使用区域。 – Solmead 2012-04-08 18:20:52

+0

啊,我误解了。在这种情况下,您必须交换现有规则,然后手动为管理页面创建路由。或者你可以添加一个管理区域。 – 2012-04-08 19:23:13