HTML.Display()不显示任何内容

时间:2013-02-26 11:48:46

标签: asp.net-mvc-4

我刚刚开始使用mvc并拥有以下代码:

@model AzureDemo.Models.User

@{
    ViewBag.Title = "Interests";
}

<h2>Interests</h2>

<p>
    @Html.ActionLink("Logout", "Logout")
</p>
<table>
    <tr>
        <th>
            Interests
        </th>
    </tr>

@foreach (var interest in Model.Interests) {
     <tr>
         <td>
            @Html.Display(interest)
        </td>
        //Tried like this
        <td>
            @Html.Display("id", interest.ToString())
        </td>
    </tr>
}

</table>

User中的Interests属性只是一个字符串列表。我正在尝试在用户的表格中显示每个兴趣。我也尝试在Html.Display中添加类似“test”的字符串,或尝试使用ToString()但仍然没有。

2 个答案:

答案 0 :(得分:4)

我建议您使用显示模板并删除视图中的所有foreach循环:

@model AzureDemo.Models.User

@{
    ViewBag.Title = "Interests";
}

<h2>Interests</h2>

<p>
    @Html.ActionLink("Logout", "Logout")
</p>
<table>
    <thead>
        <tr>
            <th>
                Interests
            </th>
        </tr>
    </thead>
    <tbody>
        @Html.DisplayFor(x => x.Interests)
    </tbody>
</table>

然后定义相应的显示模板,该模板将自动为Interests集合(~/Views/Shared/DisplayTemplates/Interest.cshtml)的每个元素呈现:

@model AzureDemo.Models.Interest
<tr>
    <td>
        @Html.DisplayFor(x => x.Text)
    </td>
</tr>

答案 1 :(得分:2)

您可以直接使用此类型号

@foreach (var interest in Model.Interests) {
 <tr>
     <td>
        @interest
    </td>
    // or this 
    <td>
        @interest.ToString()
    </td>
</tr>
}

或者如果您在视图中显示html代码,则更安全

@foreach (var interest in Model.Interests) {
 <tr>
     <td>
        @Html.Raw(interest)
    </td>
</tr>
}

还要感谢这个机会;)