我想了解RouteExistingFiles如何工作。 所以我創建了一個新的MVC 3互聯網項目(MVC 4的行爲方式相同),並將HTMLPage.html文件放到我的項目的Content文件夾中。 現在我去Global.asax文件和編輯的RegisterRoutes功能,所以它看起來像這樣:ASP.NET MVC 3:RouteExistingFiles = true似乎沒有效果
public static void RegisterRoutes(RouteCollection routes)
{
routes.RouteExistingFiles = true; //Look for routes before looking if a static file exists
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);
}
現在應該給我時,我請求本地主機的錯誤:XXXX /內容/ HTMLPage.html因爲沒有「Content」控制器,並且請求肯定會觸發默認模式。但是,我正在看到我的HTML頁面。 我在這裏做錯了什麼?我想我不得不放棄。 即使我添加的路由像這樣的:
routes.MapRoute("", "Content/{*anything}", new {controller = "Home", action = "Index"});
它仍然顯示我HTMLPage的內容。 當我請求像〜/ Content/HTMLPage這樣的網址時,我得到了索引頁面,但是當我添加文件擴展名如.html或.txt時,會顯示內容(或者404錯誤,如果文件不存在)。 如果任何人都可以在VS2012中查看,請告訴我您獲得的結果。 謝謝。
具有「{控制器}/{動作}/{id}」模式的默認路由看起來很適合〜/ Content/HTMLPage.html請求。所以有一條匹配的路線。 –
@OleksandrKaplun:只有當您確實擁有名爲「Content」的控制器以及名爲「HTMLPage.html」的控制器中的操作方法時,纔會匹配。 – Guffa
這聽起來很有說服力,但仍然不起作用。這裏是我添加到我的RegisterRoutes函數的頂部:'routes.MapRoute( 「ExactMatch」, 「Content/HTMLPage.html」, new {controller =「Home」,action =「About」}); '。還向我展示了html頁面的內容。附:我明白它應該像這樣工作(手冊說它應該),但它不會,所以我猜這是我做錯了。我在本地測試VS2012和Windows 7. –