MVC视图继承

Pap*_*ndy 2 c# model-view-controller asp.net-mvc inheritance

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

我的视图继承了以下汽车列表:

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

}
Run Code Online (Sandbox Code Playgroud)

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

return View(Model.GetCars());
Run Code Online (Sandbox Code Playgroud)

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

<% foreach (Car myCar in ViewData.Model)
{some html here}
%>
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*han 18

创建数据传输对象

public class CarLotViewModel
{
     public List<Car> Cars { get; set; }
     public List<Dealer> NearbyDealers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

public partial class CarLot : ViewPage<CarLotViewModel>
{    
}
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中:

var model = new CarLotViewModel();

model.Cars = GetCars();
model.NearbyDealers = GetDealers();

return View(model);
Run Code Online (Sandbox Code Playgroud)

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

<% foreach (Car car in ViewData.Model.Cars) { %>
....
<% foreach (Dealer dealer in ViewData.Model.NearbyDealers) { %>
Run Code Online (Sandbox Code Playgroud)