我在linq中进行了一个查询,加入了2个类,问题现在我想在视图中显示它,因为查询在控制器中这里是查询:
public ActionResult JoinSupToPro()
{
SupplierDBContext dbS = new SupplierDBContext();
var innerJoinQuery = from pro in db.Products join sup in dbS.Suppliers on pro.SupplierId equals sup.ID
select new { pro.Name,pro.Price, NameSup= sup.Name , sup.Phone,};
return View();
}
如何在视图中显示它们?
答案 0 :(得分:6)
我建议创建一个新的viewmodel
类来加载来自2个不同表的数据,如下所示:
public class ProductSupplier
{
public string ProName {get; set;}
public string Price{get; set;}
public string SupName{get; set;}
public string SupPhone{get; set;}
}
现在,当您从controller
返回数据时,请填写model
并将其返回到以下视图:
public ActionResult JoinSupToPro()
{
SupplierDBContext dbS = new SupplierDBContext();
//Create list instance of your model
List<ProductSupplier> model=new List<ProductSupplier>();
var innerJoinQuery = (from pro in dbs.Products
join sup in dbS.Suppliers
on pro.SupplierId equals sup.ID
select new
{
proName=pro.Name,
proPrice=pro.Price,
supName= sup.Name ,
supPhone=sup.Phone
}).ToList();//convert to List
foreach(var item in innerJoinQuery) //retrieve each item and assign to model
{
model.Add(new ProductSupplier()
{
ProName = item.proName,
Price = item.proPrice,
SupName = item.supName,
SupPhone = item.supPhone
});
}
return View(model);
}
从控制器传递模型后,您可以在视图中显示它,如下所示:
//Refer the list instance of model in your view
@model IEnumerable<ProjectName.Models.ProductSupplier>
@foreach(var item in Model)
{
//assign this values to any element of html
//by referring it as @item.ProName, @item.Price etc.,
}
希望很清楚
答案 1 :(得分:0)
这里有两个选项,一个使用Ajax在视图中显示此查询。有用,但您可能需要动态创建html,具体取决于您想要实现的目标。
第二个是使用视图模型并在您的视图中调用此模型,因此将能够实现以下目的:
foreach(var item in model)
{
<td>item.prop<td>
}
祝你好运!
答案 2 :(得分:0)
您需要传递数据才能查看。 喜欢
return view(innerJoinQuery.ToList())
请参阅此链接了解详情