我使用产品列表作为我的部分视图的模型。在局部视图中,我使用foreach循环来获取Product类的值并尝试将其呈现给用户。在局部视图中,我编写了这段代码:
@model Project.ViewModel.ListofProductsVM
@using Project.Models
<table>
<tr>
<th>
Name
</th>
<th>
Cost
</th>
</tr>
@{
foreach (Products prod in Model.products)
{
<tr>
<td>@prod.Name.ToString()</td>
<td>@prod.Cost.ToString()</td>
</tr>
}
}
</table>
我可以在页面中看到标题“名称”和“费用”,但产品名称及其费用未呈现。当我在HTML中检查源代码时,它只显示这个HTML:
<table>
<tr>
<th>
Name
</th>
<th>
Cost
</th>
</tr>
</table>
调试时我可以看到值正确传递给部分视图。即使“@ prod.Name”和“@ prod.Cost”也会向我显示正确的值。但它没有呈现给HTML。我不明白我在做错了什么。提前谢谢。
答案 0 :(得分:0)
@{ }
表示这是c#代码块,你可以通过这样编写foreach循环代码来解决问题:
@foreach (Products prod in Model.products)
{
<tr>
<td>@prod.Name.ToString()</td>
<td>@prod.Cost.ToString()</td>
</tr>
}
如果你想坚持自己的方式,那么你必须指定将其渲染为html,如:
@{
foreach (Products prod in Model.products)
{
@:<tr>
@:<td>@prod.Name.ToString()</td>
@:<td>@prod.Cost.ToString()</td>
@:</tr>
}
}
答案 1 :(得分:0)
我有一个类似的问题。就我而言,我只需要添加&#34; @&#34;在foreach嵌套在if语句之前。这是我工作代码的缩减片段
C# Model class:
public class MyModel
{
public string FirstName{ get; set; }
public string LastName{ get; set; }
}
CSHTML file:
@model List<MyProject.Models.MyModel>
@if (Model.Count > 0)
{
<div class="row" >
<table>
@foreach (var item in Model)
{
<tr>@item.FirstName @item.LastName</tr>
}
</table>
</div>
}
但它与另一位用户给你的答案相同。