3

私は非常に単純な必要性を持っていますが、それをどのように行うことができるかわかりません

私は2つのエンティティを持っています

  • 従業員

従業員は (DB) などの店舗に関連付けられています

Employee_id、Store_id
1 1  
2 1

インデックス ビューでは、.Store_namの代わりに eを表示する必要がありStoreIDます。それを行う理想的な「MVC」の方法はどれですか? データ アクセス方法として LINQ to SQL を使用しています。

4

2 に答える 2

1

IEnumerable<Employee>モデルはタイプであり、foreachループによって生成されたテーブルに表示されていると仮定します。

次に、これを実行できるはずです。

@foreach(var item in Model){
    Html.DisplayFor(modelItem => modelItem.Store.Store_name)
}
于 2012-07-18T11:44:21.017 に答える
0

ビューは、モデルの列挙可能なビューモデルに関連付けられている必要があります。ただし、ビューモデルをクリーンに保つには、ビューモデルを使用しているビューに合わせてカスタマイズする必要があり、LinqtoSQLオブジェクトにしないでください。したがって、この場合、ビューモデルにはStoreNameのプロパティがあります。私はこれをテストしていませんが、正しい方向に進むはずです。

あなたのクラス

public class EmployeeModel {
    [HiddentInput(DisplayValue=false)]
    public int EmployeeID { get;set; }

    [Display("Name = "Store")]
    public string StoreName { get;set; }    
}

あなたの行動

public ViewResult EmployeeDetails(int employeeId) {
        var model = new List<EmployeeModel>();

        foreach(var emp in Employees){
            model.Add(new EmployeeModel {
                          EmployeeID = emp.EmployeeID,
                          StoreName = emp.Store.StoreName
                      }); 
        }



        return View(model);
    }

その場合、ビューは非常に単純です。ストアの名前を判別しようとするコードでビューを複雑にする必要はありません。

@model IEnumerable<EmployeeModel>

<h2>Details</h2>


<table>
    <thead>
        <tr>
            <th>EmployeeID</th>
            <th>Store Name</th>
        </tr>

    </thead>
    <tbody>
        @foreach(var emp in Model){
         <tr>
             <td>emp.EmployeeID</td>
             <td>emp.StoreName</td>
         </tr>
        }      
    </tbody>

</table>

これがストアを変更できる従業員の編集ページである場合は、選択リストを使用できます。

于 2012-07-18T11:52:15.910 に答える