0

我目前有一个视图呈现员工实体列表的显示页面。从数据库返回的 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>
}

让这个工作的最佳方法是什么?

4

2 回答 2

2

您可以添加一个局部视图并在主视图中这样调用它:

@foreach (var item in Model)
{
    // other tds here

    @Html.Partial("_Gender",item.Gender)
}

View >> Shared文件夹中创建名为_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>
}
于 2014-07-04T16:20:45.307 回答
1

如果您希望它与显示模板一起使用,那么您需要执行以下操作:

@foreach (var item in Model)
{
    @Html.DisplayFor(model => item.Gender)
}

并在视图模型中附加属性:

[UIHint("Gender")]
public string Gender { get; set; }

UIHint 告诉 MVC 使用哪个 Display 模板。否则按照约定,MVC 将寻找一个名为 String.chtml

于 2014-07-05T11:39:49.733 回答