2014-02-17 24 views
0

我有以下的路線,和2個控制器「家」,「屬性」:路線,而不在URL中的動作或ID控制器

routes.MapRoute(
    name: "DefaultWithNoActionInUrl", 
    url: "{controller}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

這些網址路徑正確,並帶我到索引操作:

  • /
  • /主頁
  • /首頁/指數
  • /主頁/ 1
  • /屬性/索引
  • /屬性/ 1

這一個不斷給資源未找到errror:

  • /屬性

好像當我使用屬性沒有動作和ID的網址,它不映射到任一路由。

我在做什麼錯我的路線?

回答

0

您可能會注意到在解決方案資源管理器中有一個名爲「Properties」的文件夾,其中包含AssemblyInfo.cs。 如果我在這裏,當你編寫/屬性,它基本上被一個模塊捕獲,該模塊負責列出靜態文件(不被路由到asp.net mvc路由)。當它試圖列出這個內容時文件夾運行時禁止它,因爲此文件夾未配置目錄列表。

同樣,如果您創建名爲「內容」的控制器,則會看到相同的錯誤。

如果您有可能更改控制器的名稱?

如果這是不可能的,你可以關注。

在你RouteConfig.cs

routes.RouteExistingFiles = true; 

欲瞭解更多有關如何通過上述工作,請參閱https://prerakkaushik.wordpress.com/2014/02/12/routing-request-for-static-files-with-or-without-extension-in-asp-net-mvc/

+0

究竟是什麼。我從來沒有遇到過這個。感謝您的鏈接。我試着將RouteExistingFiles設置爲true,但後來所有的js和css文件引用都返回了404。所以我重命名了控制器。 – tkweli112

+0

我認爲你的情況只是routes.RouteExistingFiles = true;應該夠了。請讓我知道這是否適合你。謝謝 –

+1

是的,如前所述,它導致我的js和css文件無法加載,所以我必須將這些行添加到路由配置中,這樣我的靜態資源仍然可以加載。 routes.IgnoreRoute( 「內容/ {*通配符}」); routes.IgnoreRoute(「Scripts/{* wildcard}」); routes.RouteExistingFiles = true; – tkweli112

相關問題