2010-11-29 114 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