C# 如何在asp.net MVC中映射2个不同的列表
我试图将列表从控制器发送到视图。我以为它会绑定,但它是另一种类型,所以不会绑定。(错误:参数类型“System.Collections.Generic.List”不可分配给模型类型“System.Collections.Generic.IEnumerable”)。那么我应该如何映射这两个列表呢 控制器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()
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);
}