【发布时间】:2011-06-28 14:47:51
【问题描述】:
我试图将列表返回到包含来自两个表的数据的显示模板,我正在使用存储库模式和视图模型将数据从返回两个对象的 LINQ 查询传递到视图
有没有在接口中定义多个类型的集合? 对于我在界面中使用过的单一类型,
IQueryable<CustomerSite> CustomerSites { get; }
然后我在存储库中有我的 linq 查询
public IQueryable<CustomerSite> CustomerSites
{
get { return customerSitesTable; }
}
但是,由于这个新查询将包含 2 种类型,客户和客户站点,所以应该如何在界面中定义此集合?
======更新
我已尝试使用 .Include(这会引发错误,指出客户实体中没有包含的定义,不确定我是否缺少此名称空间?)
我也尝试过创建自定义界面,
public interface ICustomersAndSitesRepository
{
IQueryable<CustomerSite> CustomerSites { get; }
IQueryable<Customer> Customers { get; }
IQueryable<ICustomersAndSitesRepository> CustomerAndSites { get; }
}
还有这个方法在仓库里
public IQueryable <ICustomersAndSitesRepository> CustomerAndSites
{
get { return CustomerAndSites; }
}
但是,当我尝试将集合传递给控制器中的视图时,
public ViewResult List([DefaultValue(1)] int page)
{
var customersWithSitesToShow = customersAndSitesRepository.CustomerAndSites;
var viewModel = new CustomerSitesListViewModel
{
Customers = customersWithSitesToShow.Skip((page - 1) * PageSize).Take(PageSize).ToList(),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = customersWithSitesToShow.Count()
}
};
return View(viewModel); //Passed to view as ViewData.Model (or simply model)
}
将存储库重新转换为视图模型时出现转换错误
Cannot implicitly convert type 'System.Collections.Generic.List<CustomerDatabase.Domain.Abstract.ICustomersAndSitesRepository>' to 'System.Collections.Generic.IEnumerable<CustomerDatabase.WebUI.Models.CustomerViewModel>'. An explicit conversion exists (are you missing a cast?)
我正在定义视图模型
公共 IEnumerable 客户 { get;放; }
谁能给我指出正确的方向?
【问题讨论】:
标签: asp.net-mvc-2 interface repository viewmodel