0

我爲我的網站使用asp.net MVC 3,我想用我的地址中的破折號替換下劃線。我能行 。但是當我想在一個區域內替換它們時,我無法做到這一點。如何在內部區域用短劃線代替下劃線?

誰能幫幫我?

這是我的代碼:

public class HyphenatedRouteHandler : MvcRouteHandler 
     { 
      protected override IHttpHandler GetHttpHandler(RequestContext requestContext) 
      { 
       requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("-", "_"); 
       requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("-", "_"); 
       return base.GetHttpHandler(requestContext); 
      } 
     } 

,這是我區的路線:

context.MapRoute(
       "products_default", 
       "products/{controller}/{action}", 
       new { controller = "All", action = "Index" } 
      ); 

我想瀏覽這個地址:

本地主機:1559 /產品/店建設者/ boronz

產品是我的地區名稱。當然,當我瀏覽這個地址:

本地主機:1559 /產品/ store_builder/boronz

它顯示頁面。

編輯:

我用這個爲我區的路線,但它不能檢測到這是一個面積:

//context.Routes.Add(
// new Route("products/{controller}/{action}", 
// new RouteValueDictionary(
//  new { controller = "", action = "Index" }), 
//  new MyProject.MvcApplication.HyphenatedRouteHandler()) 
//); 

我怎樣才能解決這個問題?

回答

1

我認爲你有一個簡單的方法是調整你的路線:

context.MapRoute(
    "products_default", 
    "products/store-builder/{action}", 
    new { controller = "YourControllerName", action = "Index" } 
); 

這種方法的缺點,不過,是你需要創建很多路線作爲控制器的數量增長。另外,我可能已經回答了類似的問題here,它會創建一個像您的示例一樣的自定義路由處理程序。

+0

是的,這是簡單的選項。但商店建設者是我的產品之一。網站建設者可能是下一個。所以我需要爲此創建另一條路線。但我可以爲它們全部使用一種模式。 –

0

你在調用string.replace錯誤:第一個參數是將被第二個參數替換的舊值。

public class HyphenatedRouteHandler : MvcRouteHandler 
    { 
     protected override IHttpHandler GetHttpHandler(RequestContext requestContext) 
     { 
      requestContext.RouteData.Values["controller"] = requestContext.RouteData.Values["controller"].ToString().Replace("_", "-"); 
      requestContext.RouteData.Values["action"] = requestContext.RouteData.Values["action"].ToString().Replace("_", "-"); 
      return base.GetHttpHandler(requestContext); 
     } 
    } 
+0

這個工程,當我用這個區域。但在區域中,當我在地址欄中使用破折號時,找不到地址。 –

+0

@Persian。不幸的是,我不明白'超出區域'是什麼意思,你能否給我點點啓發? – Destrictor

+0

我是指地區。產品是一個區域。在我的項目中有一個產品名稱區域。 –