3

我有一个非常简单的需求,但无法弄清楚如何完成

我有 2 个实体

  • 员工
  • 店铺

员工与商店相关联,例如(DB)

Employee_id, Store_id
1 1  
2 1

在索引视图中,我需要显示Store_name 而不是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

你的视图应该绑定到一个视图模型,它可以是一个可枚举的模型。但是为了保持它的整洁,你的视图模型应该是自定义视图,而不是你的 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,那么您可以使用选择列表。

于 2012-07-18T11:52:15.910 回答