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の使い方を教えていただければ、すばらしいと思います。これまでに試しましたが、()でラムダ式を受け入れないため、文字列パスが必要です。(多分使用を逃していますか?)

どうもありがとう。アレックス。

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 に答える