2012-04-23 87 views

回答

1

这是因为Url.Action助手使用您的路线登记在全球的.asax。并且由于您的行动名称为Index,因此我猜想在您的路线注册中,您已指定action="Index"的默认值,因此将其省略。

例如,如果您有以下默认路由:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Default", 
     "{controller}/{action}", 
     new { controller = "Home", action = "Index" } 
    ); 
} 

因为controller = "Home"action = "Index"约束已指定了//Home是绝对等同的URL并且调用Home控制器的Index作用。

所以当你尝试用一些助手构建一个url时会发生同样的情况:它使用你的路由。

如果您需要在url中包含动作名称,请确保您已在路由定义中删除了action约束条件。