在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不同。
答案 0 :(得分:16)
你绝对可以做到这一点。使用路由很简单。您可以将不同的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
}
答案 1 :(得分:0)
我们举一个例子, 我有一个控制器,名为律师
public class LawyersController : Controller
{
// GET: Lawyers
public ActionResult Login()
{
return View();
}
public ActionResult Signup()
{
return View();
}
所以我有一个控制器和2个视图。