我希望能夠擁有不綁定到控制器的自定義頁面。這些自定義頁面將全部路由到默認控制器。然後還有其他頁面不是自定義的,它們正常地設置了控制器類。我無法使路由規則適用於這兩種情況。MVC路由 - 如果控制器不存在,如何跳過路由規則?
我看起來像這樣的路由規則:
routes.MapRoute(_
name:="Default", _
url:="{controller}/{action}", _
defaults:=New With {.controller = "Home", .action = "Index"} _
)
routes.MapRoute(_
name:="Custom Page", _
url:="{name}", _
defaults:=New With {.controller = "Page", .action = "Index"} _
)
這種情況適用於靜態控制器,而不是自定義頁面。它總是試圖找到不存在的自定義名稱(url:=「{name}」)的控制器,所以我得到「資源未找到」錯誤。
如果我顛倒規則,那麼自定義頁面可以正常工作,但靜態頁面不會。
我知道問題在於兩個規則相互重疊,因此總是使用無論哪一個都是第一個。理想情況下,我希望能夠告訴路由尋找一個名爲X的控制器,如果它存在的話就使用它。如果它不存在,則重定向到Y控制器並傳入X作爲參數。現在,如果控制器不存在,它不會繼續到下一個路由規則,它只是表示無法找到資源。
是這樣的可能嗎?
謝謝!這解決了我的問題。博客文章中的代碼稍微不完整,所以任何想使用它的人都應該閱讀帖子(瞭解它),並在帖子末尾抓取作者鏈接的圖書館。 – sorenhk