Linq Join Query - 如何在视图中显示新表MVC C#

时间:2015-07-01 12:04:11

标签: c# html linq asp.net-mvc-4

我在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();
    }

如何在视图中显示它们?

3 个答案:

答案 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())

请参阅此链接了解详情

http://www.asp.net/mvc/overview/getting-started/introduction/accessing-your-models-data-from-a-controller