簡體   English   中英

MVC路由問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM