我有两个表,我正在对它们执行左连接,我希望结果表显示在我的视图中,任何想法如何做?
这是我的控制器部分
public Actionresult display()
{
var joindata = (from c in dd.CategoryTbls join n in dd.SubCategoryTbls on c.Id equals n.CategoryId select new { ID=c.Id,CategoryName= c.CategoryName,SubCategoryName=n.SubCategoryName }).ToList();
return(joindata);
}
我无法将其显示为强类型视图,因为结果表是两个表的连接,所以任何想法如何做?
答案 0 :(得分:0)
我希望结果表显示在我的视图
中
这是错误的做法。
在MVC中,您的视图不会显示“表格”,但会显示“模型”。
措辞的改变就是解决方案:为您的联合记录创建一个类,并为该模型创建一个强类型视图。
答案 1 :(得分:0)
一种方法是使用ViewBag
所以不要将模型传递给视图,而是执行此操作。
ViewBag.Joindata = (from c in dd.CategoryTbls join n in dd.SubCategoryTbls on c.Id equals n.CategoryId select new { ID=c.Id,CategoryName= c.CategoryName,SubCategoryName=n.SubCategoryName }).ToList();
然后,您就可以从视图中访问ViewBag 这是非常脏的解决方案。 实施例
@ViewBag.Joindata[0].ID
将包含第一条记录。
其他选项不是使用dynamic
对象来创建代表您的viewModel并使用强类型视图的模型,而是更适合您的问题的解决方案。
public class ThatSpecificViewModel
{
public ThatSpecificViewModel(int id, string categoryName, string subCategoryName)
{
this.ID = id;
this.CategoryName = categoryName;
this.SubCategoryName = subCategoryName;
}
public int ID { get; set; }
public string CategoryName { get; set; }
public string SubCategoryName { get; set; }
}
并以这种方式选择
var joindata = (from c in dd.CategoryTbls join n in dd.SubCategoryTbls on c.Id equals n.CategoryId select new ThatSpecificViewModel(c.Id,c.CategoryName,n.SubCategoryName )).ToList();
答案 2 :(得分:0)
你想要的只是一个视图模型......创建一个类似ViewModelResult
或类似
public class ViewModelResult
{
public YourTable1 YourTable1{get;set;}
public YourTable1 YourTable2 {get;set;}
}
然后按如下所示制作代码: -
public Actionresult display()
{
ViewModelResult joindata = (from c in dd.CategoryTbls join n in dd.SubCategoryTbls on c.Id equals n.CategoryId select new ViewModelResult { ID=c.Id,CategoryName= c.CategoryName,SubCategoryName=n.SubCategoryName }).ToList();
return view(joindata);
}
并在您的视图中绑定ViewModelResult
作为模型,您可以通过foreach等执行任何您想要在网格中显示数据的内容。