Asp.net-Mvc

單個控制器的 MVC 多個視圖

  • December 13, 2021

是否可以在 MVC 中使用單個控制器“ListController”執行以下操作來處理以下頁面…

www.example.com/List/Cars/ForSale/{id} 可選

www.example.com/List/Cars/ForRent/{id} 可選

www.example.com/List/Search/

www.example.com/List/Boats/ForSale/{id} 可選

www.example.com/List/Boats/ForRent/{id} 可選

www.example.com/List/Boats/Search/

如果沒有,除了將 CarsController 和 BoatsController 分開之外,還有什麼辦法可以繞過它?他們將使用相同的邏輯,只是希望 URL 不同。

你絕對可以做到這一點。使用路由很簡單。您可以將不同的 url 路由到控制器中的不同操作。

以下是定義上述一些 url 的範例:

routes.MapRoute("CarSale"
   "/List/Cars/ForSale/{id}",
   new { controller = "list", action = "carsale", id =  UrlParameter.Optional } );

routes.MapRoute("ListSearch"
   "/List/search",
   new { controller = "list", action = "search"} );


routes.MapRoute("BoatSale"
   "/List/Boats/ForSale/{id}",
   new { controller = "list", action = "boatsale", id =  UrlParameter.Optional } );

然後在您的控制器中,您將為每個控制器提供操作方法:

public ListController 
{
   // ... other stuff 

   public ActionResult CarSale(int? id)
   {
     // do stuff

     return View("CarView");
   }

   public ActionResult BoatSale(int? id)
   {
     // do stuff

     return View("BoatView");
   }

       // ... other stuff 
}

引用自:https://stackoverflow.com/questions/4866455