2010-11-29 110 views
1

如果我想打一个url,如 http://localhost:8080/controllername 我希望“索引”操作是默认的操作。我认为默认的路由映射会很好,并且在指定任何控制器时调用“索引”操作 - 看起来我需要指定 http://localhost:8080/controllername/index默认路由问题

这是正确的吗?

映射:

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

我们可以看看您的其他路线吗?也许其他人正在优先考虑? – spender 2010-11-29 10:21:07

回答

0

什么你想一定要工作。实际上,您发布的代码来自默认模板,我刚刚通过在AccountController中添加“Index”操作并在浏览器中访问/ Account来测试它。

我建议创建一个新项目并测试此行为(首先使用内置web服务器,然后使用IIS,如果您不是始终使用内置服务器)。如果它起作用,那么在你的项目中可能会导致问题的不同。

0

我有一个类似的问题,它发生是因为与项目中的目录发生冲突。我有这样的结构,在我的项目:

Controllers \ 
      HomeController.cs 
      CmsController.cs 
Cms \ 
    WhateverFile.cs 

Cms子目录相撞的/Cms URL,而Cms/Index工作。我只是重命名了我的碰撞文件夹名称。如果必须保留它,则可以使用RouteCollection.RouteExistingFiles来防止自动查找文件。如果启用了此功能,我认为必须为脚本等添加很多排除项,例如参见this blog post