私は非常に単純な必要性を持っていますが、それをどのように行うことができるかわかりません
私は2つのエンティティを持っています
- 従業員
- 店
従業員は (DB) などの店舗に関連付けられています
Employee_id、Store_id 1 1 2 1
インデックス ビューでは、.Store_nam
の代わりに eを表示する必要がありStoreID
ます。それを行う理想的な「MVC」の方法はどれですか? データ アクセス方法として LINQ to SQL を使用しています。
私は非常に単純な必要性を持っていますが、それをどのように行うことができるかわかりません
私は2つのエンティティを持っています
従業員は (DB) などの店舗に関連付けられています
Employee_id、Store_id 1 1 2 1
インデックス ビューでは、.Store_nam
の代わりに eを表示する必要がありStoreID
ます。それを行う理想的な「MVC」の方法はどれですか? データ アクセス方法として LINQ to SQL を使用しています。
IEnumerable<Employee>
モデルはタイプであり、foreachループによって生成されたテーブルに表示されていると仮定します。
次に、これを実行できるはずです。
@foreach(var item in Model){
Html.DisplayFor(modelItem => modelItem.Store.Store_name)
}
ビューは、モデルの列挙可能なビューモデルに関連付けられている必要があります。ただし、ビューモデルをクリーンに保つには、ビューモデルを使用しているビューに合わせてカスタマイズする必要があり、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>
これがストアを変更できる従業員の編集ページである場合は、選択リストを使用できます。