我已經通過了一些關於Asp.net MVC和目錄結構這些問題閱讀,但我還是不明白怎麼immitate正規網址目錄,例如www.mysite.com /書籍/冒險/英國Asp.net MVC URL和目錄結構
而且,當你想到的標準網站頁面像首頁,關於,聯繫我們等你不會希望爲每一個控制器,但你也不想的網址看起來像這樣: www.mysite.com/home/about 你會最好希望它是www.mysite.com/about
任何有圖路線對象的好足夠的瞭解,以幫助我理解這?
感謝, 雅克
我已經通過了一些關於Asp.net MVC和目錄結構這些問題閱讀,但我還是不明白怎麼immitate正規網址目錄,例如www.mysite.com /書籍/冒險/英國Asp.net MVC URL和目錄結構
而且,當你想到的標準網站頁面像首頁,關於,聯繫我們等你不會希望爲每一個控制器,但你也不想的網址看起來像這樣: www.mysite.com/home/about 你會最好希望它是www.mysite.com/about
任何有圖路線對象的好足夠的瞭解,以幫助我理解這?
感謝, 雅克
這是global.asax.cs
默認情況下完全可定製的,一個新的MVC項目增加了下面的約定標準的「包羅萬象」路線:www.mysite.com/Controller/Action/ID
如果你想不同的東西,比如你www.mysite.com/about路由的例子HomeController.About()動作,你會之前添加以下路由的包羅萬象的一個:
routes.MapRoute(
"My About Route",
"About",
new { controller = "Home", action = "About" }
);
您可以添加任何數量的不遵循MVC catchall約定的自定義路由,甚至可以根據需要完全替換catchall路由。
編輯:
要回答下面的評論,沒有你不一定需要添加一個路由,一切可能的行動,而不是可以讓適合的URL的一個模式的單一路線 - 只就像人們正在做的那樣。 {controller}
和{action}
是特殊關鍵字。
例子:
1)程序有一個SetController,但用戶都習慣叫它們批次:
routes.MapRoute(
"Batch",
"Batch/{action}/{id}",
new { controller = "Set", action = "Index", id = UrlParameter.Optional }
);
2)你喜歡按對象類型的控制器,但有鏈接的是一個動詞/名詞格式:
routes.MapRoute(
"NewCatchall",
"{action}/{controller}/{name}",
new { controller = "Home", action = "Index", name = UrlParameter.Optional }
);
第二個例子可以完全取代默認路由,以及所有可能的網址將適合其格式。所以沒有什麼會繼續檢查任何其他路線。瞭解路由是按順序檢查很重要,並且使用了與請求匹配的第一個模式 - 其餘的忽略。
感謝arserbin3:
這些學習的時候對我很有益的。所以你說的是,對於這些普通頁面中的任何一個,你都必須在全局asax文件中創建路由。我想我只是習慣於在CMS環境中工作,每次都必須這樣做似乎有點矯枉過正。從MVC的角度來看,它確實有意義。再次感謝 – Jacques 2012-07-13 07:21:56
如何更詳細的目錄結構,如www.mysite.com/services/electrical/contractors ...? – Jacques 2012-07-13 07:26:17