MVC视图继承

时间:2009-01-07 22:04:43

标签: c# asp.net-mvc model-view-controller inheritance

例如: 假设我想要返回显示汽车列表的视图,并显示您所在地区的一部分经销商。这是两个脱节的数据。

我的视图会继承以下内容的汽车列表:

public partial class CarLot : ViewPage<List<Cars>>
{

}

现在,从控制器,我可以返回视图,如下所示:

return View(Model.GetCars());

为了呈现这一点,我的标记看起来如下所示:

<% foreach (Car myCar in ViewData.Model)
{some html here}
%>

这会处理汽车列表,但我的问题是,如何处理经销商列表? 视图是否支持多重继承,或者我是否必须再次从标记中获取模型?我知道可以这样做,但我不确定这是否是最好的做法。

2 个答案:

答案 0 :(得分:18)

创建数据传输对象

public class CarLotViewModel
{
     public List<Car> Cars { get; set; }
     public List<Dealer> NearbyDealers { get; set; }
}

设置视图以使用视图模型:

public partial class CarLot : ViewPage<CarLotViewModel>
{    
}

然后在你的控制器中:

CarLotViewModel model = new CarLotViewModel();
model.Cars = GetCars();
model.NearbyDealers = GetDealers();
return View(model);

然后在视图中枚举每个集合:

<% foreach (Car car in ViewData.Model.Cars) { %>
....
<% foreach (Dealer dealer in ViewData.Model.NearbyDealers) { %>

答案 1 :(得分:0)

  

设置视图以使用视图模型:

     

公共部分类CarLot:   ViewPage {}

MVC 1.0中没有代码隐藏。如何设置视图以使用视图模型?