Asp.net-Mvc
如何將命名空間添加到自定義路由擴展
我使用 routes.add 而不是 routes.maproute (具有命名空間 arg),因為我擴展了 Route 類。我需要在路由上添加命名空間,因為我的一個區域在站點內具有相同的控制器名稱。我的問題是我不知道將命名空間放在哪裡..
public class CultureRoute : Route { public CultureRoute(string url, object defaults, object constraints, RouteValueDictionary dataTokens) : base(url, new RouteValueDictionary(constraints), dataTokens, new MvcRouteHandler()) { } }全球.asax
routes.Add("Default", new CultureRoute( "{controller}/{action}/{id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional}));
var dataTokens = new RouteValueDictionary(); var ns = new string[] {"MyProject.Controllers"}; dataTokens["Namespaces"] = ns; routes.Add("Default", new CultureRoute( "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, null /*constraints*/, dataTokens ));
編輯:(以前創建了一個自定義路線,但這不是必需的)。這應該可以解決問題。至少在 MVC 4 和最有可能的 MVC 3 中是這樣
Route defRoute = new CultureRoute ("{controller}/{action}/{id}", new RouteValueDictionary(new { controller = "Home", action = "Index", id = UrlParameter.Optional }), new SomeRouteHandler()); if( defRoute.DataTokens == null ) defRoute.DataTokens = new RouteValueDictionary(); defRoute.DataTokens.Add("Namespaces", new string[] { "MVCApp.WebUI.Controllers" }); routes.Add(defRoute);