具有业务逻辑的多视图模型

时间:2014-08-26 14:26:51

标签: c# asp.net-mvc razor

基于此处的示例:

Multiple ViewModels in View

任何人都可以在不添加单个项目的情况下显示此示例,而是显示数据源。因此,例如,如果我的业务逻辑层具有提取客户地址的方法,那么我的两个模型将是CustomerInfo& CustomerLocations - 以这种方式这样做我在显示的最后一行(.Add)上遇到了麻烦。我尝试删除ToList,但无论如何它都说我有无效的争论 - 我的ViewModel类看起来与示例完全相同。

var ccus = new List<ViewModel.CustomerInfo>();
var cloc = new List<ViewModel.CustomerLocations>();
var cust = new ViewModel.Customers();
var cI1 = new Business.CustomerLogic.BLCustomerAddress();
cI1.LoadCustomerAddress(decryConcept, decryBnumber, intCustid).ToList();
ccus.Add(cI1);

在前面的例子中,他声明了内联代码

var car1 = new Car
        {
            Id = 1, 
            Name = "Passat"
};

我想通过调用我的业务逻辑来替换这件作品

我没有在我根据示例设置的新ViewModel中引用BusinesLogic模型,也许这是我需要将两个对象绑定在一起的地方。这是我的代码。

public class ViewModel 
{ public class Customers 
{ public IEnumerable<CustomerInfo> CInfo { get; set; } 
  public IEnumerable<CustomerLocations> CLoc { get; set; } 
} 
 public class CustomerInfo
{
    public int CustomerID { get; set; }
    public string AccountNo { get; set; }
    public bool Active { get; set; }
    public string Company { get; set; }
.........

1 个答案:

答案 0 :(得分:0)

ccus的类型为List<ViewModel.CustomerInfo>,因此add方法需要一个ViewModel.CustomerInfo,但是您传入的cI1类型为Business.CustomerLogic.BLCustomerAddress。调用ToList()将不会执行任何操作,因为您未存储LoadCustomerAddress的结果,因此将结果转换为列表不会影响任何内容。