2010-10-19 68 views
1

我有三個控制器,HomeBlogMisc如何MapRoute?如果http://abc.com/Home去家庭控制器,否則去其他控制器

當我在地址欄中輸入mydomain.com/Home時,瀏覽器顯示家庭控制器的視圖。

當我在地址欄中鍵入mydomain.com/Blog,瀏覽器顯示爲博客控制器視圖。

當我輸入mydomain.com/anything(不是Home也不是Blog)瀏覽器顯示misc控制器的視圖。

如何映射上述路線?

我的意思是,當類型的東西比/家庭或/博客等
例如/測試,/書籍,/書籍/指數/ XXX/YYY/ZZZ/AAA,在/ etc /等/等
然後我的其它控制器將陸續推出

routes.MapRoute(
"Default", 
"{controller}/{action}/{id}", 
new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 


routes.MapRoute(
    "Misc", 
    "{*id}", 
     new { controller = "Misc", action = "Index", id = "" }, 
; 
+0

你能**告訴我們您的** ???航線你如何在代碼中定義它們?而究竟你想,當你鍵入比/家庭或/博客以外的東西來實現? – 2010-10-19 05:02:48

回答

0

爲了陷阱「其他」項,你需要重寫控制器工廠,它決定使用哪個控制器:

protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) 
{ 
    try 
    { 
     return base.GetControllerInstance(requestContext, controllerType); 
    } 

    catch (HttpException ex) 
    { 
     int httpCode = ex.GetHttpCode(); 
     if(httpCode == (int)HttpStatusCode.NotFound) 
     { 
      IController controller = new MiscController(); 
      ((MiscController)controller).DefaultAction(); // whatever action you want to invoke 
      return controller; 
     } 
     else 
     { 
      throw ex; 
     } 
    } 
} 

然後註冊這個控制器工廠一世Global.asax啓動。

相關問題