[英]MVC routing issue
目前,我正在一個MVC項目中,嘗試在其中進行某種動態路由選擇。 我的想法是我將原始路由保留在global.asax.cs中,因此該路由將處理我制作的每個控制器。 例如,聯系人和客戶控制器。
上面的控制器將具有url之類的
/Contact/
/Account/Logoff/ etc.
我要添加的第二條路由是找不到控制器時的一種默認路由。 在那種情況下,我認為這將是通往頁面或pagedetails的路線。
例如,網址為:
/BBQ/
/BBQ/Accesoires/
我在global.asax.cs中添加了三個我認為正確的路由。 (也以正確的順序)。 在下面,我添加了路線:
routes.MapRoute(
"DefaultRoute", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Page", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"DefaultPageRoute",
"{category}",
new { controller = "Page", action = "Index", category = UrlParameter.Optional });
routes.MapRoute(
"SecondLevelPageRoute",
"{category}/{subCategory}",
new { controller = "Page", action = "PageDetails", category = UrlParameter.Optional, subCategory = UrlParameter.Optional });
通過這種設置,對控制器的調用工作正常,但是對/ BBQ /之類的頁面卻給出以下錯誤:
無法找到該資源。
如果我注釋掉第一條路線並轉到/ BBQ /網址,它的工作原理就像一個魅力。 我在此路線表中負責什么?
您將默認路由放在首位,因此它嘗試轉到由{controller = "BBQ", Action = "Index" }
定義的路由
那條路線應該是最后一條路線。 但是,您需要在路線中提供更多詳細信息。 僅具有類別路線會引起問題。
例如,如果這條路線是第一條
routes.MapRoute(
"DefaultPageRoute",
"{category}",
new { controller = "Page", action = "Index", category = UrlParameter.Optional });
然后,對URL / Contact /的調用將假定您要轉到Page/Index/Contact
而不是/Contact/Index/{id}
。 我將使用更具體的路由來表示您正在瀏覽以下類別:
routes.MapRoute(
"DefaultPageRoute",
"Category/{category}",
new { controller = "Page", action = "Index", category = UrlParameter.Optional });
因此,您將需要使用URL www.mysite.com/Category/BBQ
來查看所需的內容,但是我認為這並不很糟糕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.