【问题标题】:Asp.Net MVC Adding two viewmodels to a thirdAsp.Net MVC 将两个视图模型添加到第三个
【发布时间】:2013-06-14 11:59:24
【问题描述】:

我有两个视图模型,VM1 和 VM2 - 我想将它们添加到第三个视图模型中,这样我就可以将两个信息表发送到我的视图中 - 但我很挣扎。

我的视图模型是:

public class VM1
{
    public string contactf { get; set; }
    public string contacts { get; set; }
}

public class VM2
{
    public string petname { get; set; }
    public string type { get; set; }
}

public class VM3
{
    public VM1 VM1 { get; set; }
    public VM2 VM2 { get; set; }

}

在我的控制器中,我有一个联系人列表以及一个宠物名和类型列表:

var contacts = db.Contacts.Where(x => x.status != "Resolved")
             .Select(x => new VM1
            {
                contactf = x.contactf,
                contacts = x.contacts
            }.ToList();

var pets= db.Pets.Where(x => x.status != "Resolved")
             .Select(x => new VM2
            {
                petname = x.petname,
                type = x.type
            }.ToList();

我要做的就是将这两个列表添加到 VM3 视图模型中,这样我就可以将 2 个单独的信息列表发送到我的视图:

VM3 vm = new VM3();
vm.VM1 = contacts();

但是,在上面的最后一行中,我收到了错误:

Cannot implicitly convert type 'System.Collections.Generic.List<bm.Models.VM1>' to 'bm.Models.VM1'

如何将这两个列表添加到 VM3 中?

谢谢,

标记

【问题讨论】:

  • 我希望名字VM1VM2VM3是为了简单起见..

标签: c# asp.net asp.net-mvc viewmodel asp.net-mvc-viewmodel


【解决方案1】:

联系人的类型为 List<MV1>,因此您不能将其分配给类型为 VM1 的属性。

你需要把VM3的定义改成:

public class VM3
{
    public List<VM1> VM1 { get; set; }
    public List<VM2> VM2 { get; set; }    
}

【讨论】:

  • 谢谢 - 我在模型中改为 List,它正在工作!!!只要允许,我就会接受答案。干杯,马克
【解决方案2】:

将您的 VM3 类重写为:

public class VM3
{
  public List<VM1> VM1 { get; set; }
  public VM2 VM2 { get; set; }
}

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 2012-04-18
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2018-11-01
    • 2017-12-12
    相关资源
    最近更新 更多