我正在寻找解决问题的最佳方法。
我只需要显示3个不同实体的名称,而不是其他信息。
实体是:
db.TR{TRID, ProjectID, TemplateID, version}
db.Project{ProjectID, ProjectName}
db.Template{TemplateID, TemplateName}
我希望用最好的方法在网格中显示所有结果:
TRID - ProjectName - TemplateName - Version
我想知道你将如何做模型,控制器(索引函数)和视图。
到目前为止,我的View函数如下所示:
public ViewResult Index()
{
var viewModel = from tr in db.TRs
join proj in db.Projects on tr.ProjectID equals proj.ProjectID
join templ in db.Templates on tr.TemplateID equals templ.TemplateID
orderby proj.ProjectName
select new
{
TRList = tr.TRID,
TemplateList = templ.TemplateName,
ProjectList = proj.ProjectName,
Version = tr.version
}
return View(viewModel); //Go in Index.cshtml
}
视图是:
@model IEnumerable <OnlineTR.WebUI.Areas.Admin.Models.TRManagerModel>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelitem => item.TRList);
</td>
<td>
@Html.DisplayFor(modelitem => item.ProjectList);
</td>
<td>
@Html.DisplayFor(modelitem => item.TemplateList);
</td>
</tr>
}
我正在尝试找到一种方法来使用只使用我需要的sql请求。
如果你能告诉我如何使用.include,那就太棒了。到目前为止我已经尝试了,但它不接受()中的lambda表达式,它需要一个字符串路径。 (也许错过了使用?)
非常感谢。亚历克斯。
答案 0 :(得分:1)
您的代码的问题在于您将匿名类型的IEnumerable传递给您的视图,但它需要类型
@model IEnumerable <OnlineTR.WebUI.Areas.Admin.Models.TRManagerModel>
修复您的LINQ查询以选择具体类型,它将起作用
select new TRManagerModel
{
TRList = tr.TRID,
TemplateList = templ.TemplateName,
ProjectList = proj.ProjectName,
Version = tr.version
}