我有一个非常简单的需求,但我无法弄清楚它是如何完成的
我有2个实体
员工与(DB)
等商店相关联Employee_id, Store_id 1 1 2 1
在索引视图中,我需要显示Store_nam
e而不是StoreID
。这是理想的“MVC”方式吗?我使用LINQ to SQL作为数据访问方法。
答案 0 :(得分:1)
我假设您的模型属于IEnumerable<Employee>
类型,并且您在foreach循环生成的表中显示它。
然后你应该能够做到这一点:
@foreach(var item in Model){
Html.DisplayFor(modelItem => modelItem.Store.Store_name)
}
答案 1 :(得分:0)
您的视图应该与视图模型相关联,视图模型可以是可枚举的模型。但为了保持清洁,您的视图模型应该是对使用它的视图的自定义,并且不应该是您的Linq to SQL对象。因此,在这种情况下,您的View Model将具有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>
如果这是您可以修改商店的员工的编辑页面,那么您可以使用选择列表。