0

我正在寻找解决问题的最佳方法。

我只需要显示 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 表达式,它需要一个字符串路径。(也许缺少使用?)

非常感谢。亚历克斯。

4

1 回答 1

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  
    }   
于 2012-05-20T06:06:35.847 回答