我目前有一个视图呈现Employee实体列表的显示页面。 从Gender属性的数据库返回的值是相应性别的字符串值“M”或“F”。我希望能够在相应的属性值的视图中显示字符串“男性”或“女性”。
我已将以下逻辑添加到正在运行的Index.cshtml中。
@foreach (var item in Model)
{
<tr>
//... various <td>'s
@if (item.Gender == "M")
{
<td>Male</td>
}
else if (item.Gender == "F")
{
<td>Female</td>
}
}
我正在尝试将其移至显示模板,但无法使其正常工作。
我已将以下代码添加到Views \ Shared \ DisplayTemplates \ Gender.cshtml中:
@model System.String
@if (Model.Gender == "M")
{
<td>Male</td>
}
else if (Model.Gender == "F")
{
<td>Female</td>
}
让这项工作最好的方法是什么?
答案 0 :(得分:2)
您可以在主视图中添加局部视图并将其调用如下:
@foreach (var item in Model)
{
// other tds here
@Html.Partial("_Gender",item.Gender)
}
在视图&gt;&gt;中创建名称为 _Gender 的部分视图共享文件夹:
@model String
@{
Layout = null;
}
@if (Model== "M")
{
<td>Male</td>
}
else if (Model == "F")
{
<td>Female</td>
}
// or
<td>@(Model == "M" ? "Male" : "Female") </td>
它也可以在主视图中处理它而不创建局部视图。
它可以在主视图中处理它:
@foreach (var item in Model)
{
<tr>
//... various <td>'s
<td>@(item.Gender == "M" ? "Male" : "Female") </td>
</tr>
}
答案 1 :(得分:1)
如果您希望它与显示模板一起使用,那么您需要执行以下操作:
@foreach (var item in Model)
{
@Html.DisplayFor(model => item.Gender)
}
并在视图模型中附加属性:
[UIHint("Gender")]
public string Gender { get; set; }
UIHint告诉MVC要使用哪个显示模板。否则按照惯例,MVC将寻找一个名为String.chtml的