我有一個非常簡單的需求,但我無法查找值推測它是如何能夠做到MVC 3 - 如何顯示在一個視圖索引視圖,而不是一個ID字段
我有2個實體
- 僱員
- 商店
僱員與商店相關聯,如(DB)
Employee_id, Store_id 1 1 2 1
而在索引視圖中,我需要顯示Store_nam
而不是StoreID
。這是MVC理想的做法嗎?我正在使用LINQ to SQL作爲數據訪問方法。
我有一個非常簡單的需求,但我無法查找值推測它是如何能夠做到MVC 3 - 如何顯示在一個視圖索引視圖,而不是一個ID字段
我有2個實體
僱員與商店相關聯,如(DB)
Employee_id, Store_id 1 1 2 1
而在索引視圖中,我需要顯示Store_nam
而不是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);
}
的觀點則非常直截了當。應用程序不需要使用代碼來確定應用商店的名稱,從而使視圖複雜化。
@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>
如果這是員工的編輯頁面,您可以在其中修改商店,那麼您可以使用選擇列表。