如何在视图中显示其他表的数据?

时间:2015-04-19 10:53:51

标签: asp.net-mvc

我在使用EF5的MVC 4 Web应用程序中使用Database-First方法。我在上下文中有以下表格:

**Employee** <br>
EmpId <br>
StatusId 

Employee表的一行是:

EmpId=1<br>
StatusId=1

选项

OptionId<br>
OptionListName<br>
OptionName<br>
OptionValue<br>

选项表的一行如下:

OptionId=1
OptionListName="Status"
OptionName="Active"
OptionValue=1

我为EmployeeController创建了一个视图,该视图显示了Employee表中的一些字段,如下所示:

Employee
----------- 
EmpId     StatusId
1            1

但是我需要按如下方式查看表格:

Employee
-----------
EmpId       Status
1            Active

我怎样才能在MVC中执行此操作?

1 个答案:

答案 0 :(得分:0)

您需要一个IEnumerable<Employee>的View模型,如果您只有一个选项,则需要Options。 Viewmodel将如下所示:

public class YourNamedViewModel
{
    public IEnumerable<Employee> Employees { get; set; }
    public Options Options { get; set; }
}

然后在您的视图中将模型更改为

@using PathTo.ViewModel
@model YourNamedViewModel

<table>
    <tr>
        <th>
            @Html.LabelFor(m => m.Employees.EmpId)
        </th>
        <th>
            @Html.LabelFor(m => m.Options.OptionListName)
        </th>
    </tr>
    @foreach (var item in Model.Employees)
    {
        <tr>
            <td>
                item.EmpId
            </td>
                @if (item.StatusId == 1)
                {
                    <td>
                        <span>@Model.Options.OptionName</span>
                    </td>
                }
                else
                {
                    <td>
                        <span>Inactive</span>
                    </td>
                }
        </tr>
    }
</table>

如果您有任何其他状态模式,则需要在View模型中使用IEnumerable<Options>,并找到与Employee具有相同OptionId的相应选项。

无法测试,但它应该可以正常工作。