【发布时间】:2014-04-21 19:21:11
【问题描述】:
我正在尝试使用 linq to sql 和 ViewModel 连接 3 个表,将查询传递给 View 并显示结果,但它不起作用。
更新
DbContext 类:
public partial class DbEntities : DbContext
{
public DbSet<Foo> Foos{ get; set; }
public DbSet<Bar> Bars{ get; set; }
public DbSet<Fubar> Fubars{ get; set; }
}
视图模型:
public class MyViewModel
{
public Foo Foo{ get; set; }
public Bar Bar{ get; set; }
public Fubar Fubar{ get; set; }
}
控制器:
public ActionResult Index(string searchString)
{
//var db = new MyViewModel(); //wrong
var db = new DbEntities();
var query = (from f in db.Foos
join b in db.Bars on f.IDFoo equals b.IDFoo
join fb in db.Fubars on b.IDBar equals fb.IDBar
select new MyViewModel {
f.IDFoo,
f.NameFoo,
f.CityFoo,
b.NameBar,
fb.NameFubar });
if (!String.IsNullOrEmpty(searchString))
{
query = query.Where(x => x.NameFubar.Contains(searchString));
}
return View(query);
}
查看:
@model IEnumerable<Proj.Models.MyViewModel>
@using (Html.BeginForm())
{
<p>
@Html.TextBox("SearchString")
<input type="submit" class="no-button" value="Search" />
</p>
}
@foreach (var item in Model)
{
<div class="title">@Html.DisplayFor(modelItem => item.NameFubar)</div><br />
...
}
我收到以下错误:
1. "Cannot initialize type 'Proj.Models.MyViewModel' with a collection initializer because it does not implement 'System.Collections.IEnumerable' "
【问题讨论】:
标签: c# asp.net asp.net-mvc linq asp.net-mvc-4