C# 如何在asp.net MVC中映射2个不同的列表

C# 如何在asp.net MVC中映射2个不同的列表,c#,asp.net,entity-framework,orm,mapping,C#,Asp.net,Entity Framework,Orm,Mapping,我试图将列表从控制器发送到视图。我以为它会绑定,但它是另一种类型,所以不会绑定。(错误:参数类型“System.Collections.Generic.List”不可分配给模型类型“System.Collections.Generic.IEnumerable”)。那么我应该如何映射这两个列表呢 控制器 public ActionResult MyData() { var oldList = db.oldList.Select(x=>x.Name).ToList()

我试图将列表从控制器发送到视图。我以为它会绑定,但它是另一种类型,所以不会绑定。(错误:参数类型“System.Collections.Generic.List”不可分配给模型类型“System.Collections.Generic.IEnumerable”)。那么我应该如何映射这两个列表呢

控制器

 public ActionResult MyData()
    {
        var oldList = db.oldList.Select(x=>x.Name).ToList();

// probably here i should add var newList and in some way map with oldList then return to view

        return View(oldList);
    }
新列表视图模型

 public class NewListViewModel
    {
        public string Name { get; set; }
        public int Count { get; set; }
    }
我的视图(MyData)

@model IEnumerable
@DisplayNameFor(model=>model.Name)
@DisplayNameFor(model=>model.Count)
@foreach(模型中的var项目)
{
使用(Html.BeginForm())
{
@Html.TextBoxFor(modeleItem=>item.Name)
@TextBoxFor(modelItem=>item.Count)
}
}

只需创建
NewListViewModel
类的新
列表
,然后用旧列表数据填充即可

public ActionResult MyData()
{
    var oldList = db.oldList.Select(x=>x.Name).ToList();
    var newList=new list<NewListViewModel>();
      foreach(var item in oldList)
      {
       newList.Add(new NewListViewModel{Name=item.Name});
      }
    return View(newList);
}
public ActionResult MyData()
{
var oldList=db.oldList.Select(x=>x.Name.ToList();
var newList=新列表();
foreach(旧列表中的变量项)
{
Add(newNewListViewModel{Name=item.Name});
}
返回视图(newList);
}

你可以按照@arash.zh的建议去做。或者你可以用

@model dynamic
而不是

@model IEnumerable<MyApp.ViewModels.NewListViewModel>
@model IEnumerable
你差点就成功了:

    public ActionResult MyData()
        {
            List<NewListViewModel> newList = 
                 db.oldList.Select(x=>new NewListViewModel { Name = x.Name}).ToList();

            return View(newList);
        }
public ActionResult MyData()
{
列表新建列表=
Select(x=>NewListViewModel{Name=x.Name}).ToList();
返回视图(newList);
}

您正在选择
名称
,因此您的
旧列表
IEnumerable
,但您的视图等待
IEnumerable
我知道,但我想从旧列表中提取每个名称并将其添加到新列表中。非常感谢。我知道我应该做什么,但我不知道怎么做:Pbtw。以后如何在控制器中接收数据?public ActionResult FirstStock(FirstStockViewModel data){}?在razor文件的顶部声明模型(根据MVC约定:MyData.cshtml)@model full.Qualified.Namespace.NewListViewModel,您将能够访问HTML中的模型属性,如so@model.Name

    public ActionResult MyData()
        {
            List<NewListViewModel> newList = 
                 db.oldList.Select(x=>new NewListViewModel { Name = x.Name}).ToList();

            return View(newList);
        }