1
我在我的應用程序中定義了以下兩條路由。強制控制器的mvc路由
routes.MapRoute(
"ApplicationRoutes",
"{language}-{country}/{userid}/{controller}/{action}/{id}",
new { language="en" , country="gb", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default",
"{language}-{country}/{controller}/{action}/{id}",
new { language = "en", country = "gb", id = UrlParameter.Optional }
);
第一條路線將被捕獲的URL像
- EN-GB/11111 /目標/目錄
- EN-GB/11111 /目標/編輯/ 2
第二條路線是默認路線,將用於這樣的事情
- EN-GN /帳號/登錄
- 等
我是我,我想以武力只被調用,如果他們通過applicationRoutes途徑來某些控制器的問題。
例如我想確保目標控制器與routedata內的用戶標識一起調用。
我知道我可以檢查每個控制器的動作,如果用戶標識鍵存在與路由數據中的值。但是這對我來說並不高雅。
我也可以更具體介紹一下路線,做這樣的事情:
routes.MapRoute(
"ApplicationRoutes",
"{language}-{country}/{userid}/Targets/{action}/{id}",
new { language="en" , country="gb", controller="targets", id = UrlParameter.Optional }
);
,但這不會直接停止請求EN-GB /目標/目錄/無需提供用戶ID值。
處理這個問題的最佳方法是什麼?
太好了。如果有一個控制器需要使用這個功能,那就完美了,但是可以說我擁有許多需要使用用戶控制器的控制器。我可以按照您的指示爲每個控制器實施特定的路線,但是是否有更優雅的解決方案來爲每個控制器創建路線? – Kramer00
對不起,我忘記了那裏的控制器限制。您可以保持控制器變量不變。 –
即使有限制,當然這不會阻止我進入/ en-gb/Targets/List,而不使用路由中的用戶標識符,因爲默認路由會處理這個問題。我想要確保在目標控制器上調用的每個操作都包含routedata中的用戶標識。 – Kramer00