我有一个非常简单的需求,但无法弄清楚如何完成
我有 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)
}
你的视图应该绑定到一个视图模型,它可以是一个可枚举的模型。但是为了保持它的整洁,你的视图模型应该是自定义视图,而不是你的 Linq to SQL 对象。因此,在这种情况下,您的视图模型将具有 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);
}
然后视图非常简单。无需使用试图确定 Store 名称的代码使您的视图复杂化。
@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>
如果这是 Employee 的编辑页面,您可以在其中修改 Store,那么您可以使用选择列表。