2013-06-24 88 views
0

對於我網站上的某些頁面(例如登錄頁面),我寧願用戶看到login.htm,而不是/Home/Login將虛假頁面名稱路由到控制器

我試圖創建一個途徑,例如這樣的:

routes.MapRoute(
    name: "LoginScreen", 
    url: "login.htm", 
    defaults: new { controller = "Home", action = "Login" } 
    ); 

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

當過我嘗試訪問/login.htm,我得到一個404

回答

0

這裏對於路由其他答案一個靜態頁面到控制器(例如,url with extension not getting handled by routing),但我會問你爲什麼要這樣做?

用戶通常不關心他們所訪問的網址,並通過這樣做,實際上是從路由

修訂

的MVC,這是擴展名的好處之一搬走

看一下Url在IIS中的重寫(http://www.iis.net/learn/extensions/url-rewrite-module/iis-url-rewriting-and-aspnet-routing

您將不得不捕獲所有對.htm(l)頁面的請求,並有一些邏輯來確定將它們發送到哪裏,否則您將對每個.htm(l)頁面都有單獨的重寫規則o映射到控制器動作

+0

我們希望這樣做是出於美學原因;即我們更願意在我們的一些Uri中看到.htm。 – Sam

+0

我已經用一些可能的想法更新了答案。就我個人而言,我認爲這是一種不太理想的方法,你會給自己一個維修頭痛,但它絕對有可能做到 –

0

只要LoginScreen以上沒有其他路徑,並且控制器和動作名稱是正確的,那麼這應該可以正常工作。

如果您確實有其他路由映射,請將它們註釋掉並再次嘗試。也許另一條路線正在干擾它。

相關問題