2010-03-01 108 views
2

任何人都可以告诉我什么是“默认”路由的实际URL的语法?在控制器中获取“Default”Route Url

我想这样做:

string url = RouteTable.Routes["Default"].ToString(); 
//(even though that code is completely wrong) 

,这样我可以有可用路由的URL值一起工作。

到目前为止,我一直在尝试.GetVirtualPath()方法,但它只返回当前控制器的路由数据。

感谢

戴夫

+0

控制器通常不应该知道/护理关于网址。你想做什么? – 2010-03-01 15:16:59

回答

9

路由可以匹配任何数量的URL。所以一条路线没有网址。要从路线中获取网址,您必须为其提供您需要该网址的路线数据。要做到这一点,只需在Url属性Url.RouteUrl()上使用RouteUrl()方法即可。

更新

如果你想将生成,如果你使用它的默认值提供的路线,你可以做这样的事情的网址:

var url = Url.RouteUrl("Default", ((Route)RouteTable.Routes["Default"]).Defaults); 
+0

默认路由具有控制器和操作的默认值,这是我想他想要的(但我仍然想知道为什么!)。 – 2010-03-01 15:25:02

+0

@Mattias,谢谢,但是这段代码返回了我已经在的路线。我正在寻找的是获得“默认”网址(即RedirectToRoute(“默认”)将重定向到的等效URL。@Craig,这是一个很长的故事(可能是因为我做错了!我希望能够返回默认路由以让jQuery执行重定向 – DaveDev 2010-03-01 15:34:44

+0

它不返回已经存在的路由或url,它使用当前路由的路由值并将它们提供给您指定的路由,在这种情况下,“默认”,你恰好已经使用该路线为您当前的网址。请检查我的更新答案,如何从路线中获取默认值 – 2010-03-01 15:56:30