2011-11-08 66 views
0

假设我有以下路由ASP.MVC 3路由:如何获取包含默认操作的url?

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

现在,当您使用Url.Action( “指数”, “myController的”)生成一个URL,你会得到预期:/ myController的

但在一个例外的情况下,我想得到完整的网址/ MyController /索引 (不改变路由)...有谁知道这是可能的吗?

+0

为什么你需要完整的网址(我只是好奇)? – jgauffin

+0

我必须处理可能影响的情况... – rekna

+0

是的,但我有兴趣知道为什么? – jgauffin

回答

2

这是可能的。但是你需要修改路由。

  1. 创建派生Route
  2. 重写GetVirtualPath()方法包括/index为需要的网页上的自己的路由类。
  3. 改为使用路由类配置默认路由。
+0

这样可以,但最终我决定在这些特定情况下将操作更改为Edit,并且创建了一个重载的Url.Action(我正在使用T4MVC) : public static string Action(this UrlHelper url,ActionResult result,string fragment) 返回UrlHelper.GenerateUrl((string)null,(string)null,(string)null,(string)null,(string)null ,fragment,result.GetRouteValueDictionary(),url.RouteCollection, url.RequestContext,t后悔); } – rekna

1

恐怕这是不可能的。因为两个网址都会解决相同的控制器操作,所以这不应该成问题。