2011-04-28 74 views
0

我想達到以下(與ASP.NET MVC 3):ASP.NET MVC區域或定義的路線?

所謂的 「應用程序」 使用下列操作的控制器:

  • /應用/我
  • /應用/機構
  • /應用/新

在最後一個動作我真的想一些子動作,例如:

  • /應用/新/產品
  • /應用/新/關稅

我可以寫新的()動作採取某種參數的說哪個視圖我應該呈現(即產品或關稅),但感覺有點骯髒。

我真正想要的是產品和關稅的單獨行動方法。

這是什麼最好的方法呢?

我想我可以使用區域,但這似乎是矯枉過正的我想要的 - 是隻寫一個自定義路線的解決方案?

非常感謝! 山姆

回答

2

你可以使用區域,但這個小數目我同意它可能是矯枉過正。我會說新的行動採取參數是很好的你需要什麼。如果你想傳遞更多的信息但它仍然可以,它可能會變得更加複雜。如果您想保持代碼清潔(呃),您可以使用單獨的私有方法執行所有複雜的位。

然而,在一個自定義路由的方式做這件事(和一個單獨的控制器以及)...

的Global.asax.cs

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute("newControllerRoute", 
        "apps/new/{action}", 
        new {controller = "NewApps"}); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 

} 

的添加控制器(NewAppsController )。

public class NewAppsController : Controller 
    { 
     public ActionResult Product() 
     { 
      /* used as example */ 
      return Content("NewApps controller - Product"); 
     } 

     public ActionResult Tariff() 
     { 
      /* used as example */ 
      return Content("NewApps controller - Tariff"); 
     } 
    } 

希望這會有所幫助。

+0

決定去單獨的控制器方法和自定義路線,因爲我會發布視圖來回模式,並希望在這個階段保持清潔 – 2011-04-29 08:35:42

2

如果你有兩個不同的東西,你想能夠添加那麼這是兩個不同的行動在你的控制器。這聽起來像你只是想控制你的URL架構,所以我認爲一些自定義路由就是答案。

爲什麼不具有單獨的關稅和產品控制器?這將導致一個自然的URL模式。

+0

關稅和產品行動是在創建一個新的應用程序的過程中,所以單獨的控制器爲他們「感覺」錯誤:) – 2011-04-29 08:16:24