2

我刚开始使用 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() 但仍然没有。

4

2 回答 2

4

您可以像这样直接使用模型项目

@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>
}

也感谢这个机会;)

于 2013-02-26T13:44:28.470 回答
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>
于 2013-02-26T13:46:41.847 回答