单个控制器的MVC多个视图

时间:2011-02-01 18:27:39

标签: asp.net-mvc

在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不同。

2 个答案:

答案 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)

是您可以在一个Controller中使用多个查看

我们举一个例子, 我有一个控制器,名为律师

public class LawyersController : Controller
{
    // GET: Lawyers
    public ActionResult Login()
    {
        return View();
    } 
    public ActionResult Signup()
    {
        return View();
    }

所以我有一个控制器和2个视图。