有關MVC路由的優點之一是能夠將任何內容路由到任何位置,而不管url是否與控制器和操作方法的命名相匹配。 RouteConfig允許我們註冊特定的路線來迎合這一點。讓我告訴你如何實現這一點。
路線1:
這是通過在路徑配置的默認路由處理。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional });
擊中http://localhost
會帶你到Home
控制器和Index
操作方法。
路線2:
我們可以設置一個路由,將滿足http://localhost/<client>
和http://localhost/<client>/<clients project name>
routes.MapRoute(
"Client",
"{client}/{title}",
new { controller = "Home",
action = "Client",
title = UrlParameter.Optional });
擊中要麼http://localhost/bacon
或http://localhost/bacon/smokey
會帶你到Home
控制器和Client
操作方法。請注意,title
是一個可選參數,這是我們如何讓這兩個網址使用相同的路線。
爲了在控制器端工作,我們的動作方法Client
需要像這樣。
public ActionResult Client(string client, string title = null)
{
if(title != null)
{
// Do something here.
}
}
+1這是冒煙的培根,沒有雙關語:) – mattytommo 2013-04-30 13:02:41
真是一個很好的解釋。感謝你!我相信這會讓我面對未來更多的問題。 – Jesse 2013-04-30 18:52:59
這也適用於Web API路由嗎?而不是使用MapRoute,你只需使用MapHttpRoute? – Jesse 2013-04-30 19:52:26