【问题标题】:Multiple View Models with Business Logic具有业务逻辑的多视图模型
【发布时间】:2014-08-26 14:26:50
【问题描述】:

基于此处的示例:

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; }
.........

【问题讨论】:

  • “我在新的 ViewModel 中没有引用 BusinesLogic 模型,我根据示例设置了它,也许这是我需要将两个对象绑定在一起的地方。”你不应该有任何引用.在您的控制器中,您希望将两者联系在一起 - 创建一个视图模型,创建一个业务逻辑模型,从业务逻辑模型填充视图模型

标签: c# asp.net-mvc razor


【解决方案1】:

ccus 的类型为 List&lt;ViewModel.CustomerInfo&gt;,因此 add 方法需要一个 ViewModel.CustomerInfo,但您传入的是 cI1,它的类型为 Business.CustomerLogic.BLCustomerAddress。调用ToList() 不会执行任何操作,因为您没有存储LoadCustomerAddress 的结果,因此将结果转换为列表不会影响任何事情。

【讨论】:

  • 如果您能显示更多代码,我可能会提供更多帮助。尝试按照您链接到的问题的示例进行操作,因为从他发布的代码中可以清楚地看出问题所在。编辑你的答案可能比在 cmets 中发布代码更好,它只对非常短的片段非常有用。
  • 好的,我调整了答案,现在可能更清楚了。如果您需要更多代码,请告诉我。我让 ViewModel 类将两个模型联系在一起 - 只是不清楚这如何与我的业务逻辑一起使用。谢谢@Ben Robinson
  • 你又看这个了吗?
  • 恐怕您添加的额外信息并没有真正的帮助。只能将 CustomerInfo 的实例添加到类的 CInfo 属性中。您没有提供任何信息让我了解信息的来源,以便您创建实例并将属性设置为相关值。
猜你喜欢
  • 2011-09-15
  • 2010-10-28
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
相关资源
最近更新 更多