如何使用 Razor 在 HTML 中迭代列表变量
本文关键字:迭代 列表 变量 HTML 何使用 Razor | 更新日期: 2023-09-27 18:33:51
我是asp .net和MVC的新手。我有一个名为Jumbo()的服务方法。此方法返回包含名字、姓氏和联系电话的列表。我从我的主项目中调用此方法,如下所示。我也把它返回到视图页面。
var info = add.jumbo();
ViewData["sample"] = info;
return View("FormResults");
当我调试代码时,变量"info"包含我需要的所有数据。问题是如何使用剃刀迭代 html 表中的变量。我搜索了很多寻找解决方案,但我失败了。请帮我解决问题。提前谢谢。
首先,您需要将模型传递给视图:
return View("FormResults", info);
在视图中,您需要声明模型的类型,并使用 @ 指示代码而不是 html:
@model List<Foo> // Whatever your list is
@foreach (var item in Model)
{
<span>@item.Text</span>
}
这里有一个关于它的博客详细介绍:http://weblogs.asp.net/scottgu/asp-net-mvc-3-new-model-directive-support-in-razor
情况 1:基本上,您可以在应用程序本身中观察到这一点。MVC本身为您提供答案。什么时候?当您针对返回列表的操作创建视图时。说出您的操作返回客户列表,然后您可以观察以下代码。
@model IEnumerable<Customer>
<h2>Customers</h2>
<p>
@Html.ActionLink("Create New", "CreateCustomer", "ControllerName")
</p>
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Email)
</th>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("Edit |", "UpdateCustomer", new { id = item.Id})
@Html.ActionLink("Details", "Details", new { id = item.Id})
@Html.ActionLink("Delete", "Delete", new { id = item.Id})
</td>
</tr>
}
</table>
案例2:您的方案是在 ViewData 中发送列表时。然后,您必须将 ViewData 转换为相应的模型列表,然后您可以执行相同的 foreach 循环。行动: var info = add.jumbo(); 视图数据["样本"] = 信息;
return View("FormResults");
视图:
@if (ViewData["sample"] != null)
{
List<Info> infoList = (List<Info>)ViewData["sample"];
foreach (var i in infoList)
{
//Perform your html here enclosed with html tags.
}
}
@model Models.Nodes
@foreach (var item in Model)
{
<li>
<span> item.name </span>
</li>
}
在你的视图中,写一个foreach循环,如下所示
@model List<Object>
@foreach(var item in Model)
{
item.YourProperty;//without html
<label>@item.YourProperty</label> //in html
}