.Net Core View 中的 Foreach 语句

Foreach statement in .Net Core View

提问人:bootsy 提问时间:7/11/2019 最后编辑:bootsy 更新时间:10/19/2023 访问量:10790

问:

我想在下面的代码中遍历视图的每个项目,但不确定该怎么做。这就是我目前所拥有的。

除了这个,我没有尝试过任何东西,并且研究了示例,但没有一个符合这个特定示例。

  <div class="row">
    <div class="col-md-4">
        <div class="form-group">
            <label asp-for="Packet.Meeting" class="control- 
        label">Date/Time Of Meeting:</label>
            <input asp-for="Packet.Meeting" type="date" asp-format=" 
       {0:MM/dd/yyyy}" class="form-control" />
        </div>
        @foreach (var item in Model.Item)
        {<div class="form-group">
                <label asp-for="Item.ItemTitle" class="control-label"> 
        </label>
                <input asp-for="Item.ItemTitle" class="form-control" />
            </div>}            
      </div>
      </div>

模型如下所示:

 public class PacketViewModel
  {

    public Packet Packet { get; set; }

    public Item Item { get; set; }

    public List<Item> items { get; set; }
   }
}

我想显示项目模型中的所有项目标题

模型视图控制器 .net-core

评论

0赞 KevinLamb 7/11/2019
你的模特是什么样子的?
0赞 KevinLamb 7/11/2019
更具体地说,在您的模型中是否是一个集合?Item
1赞 bootsy 7/11/2019
更新以显示模型

答:

0赞 Amar Gadekar 7/11/2019 #1

从控制器传递模型

public ActionResult Home()
{
    //create your obj and assigned all the values

   PacketViewModel list = new PacketViewModel(); //Ienumerable ModelList class defined under Model will store the list of Model data.
   // assuming you have assigned all the values to your obj

   View(list);
}

现在,在您的视图页面中,我们将明确提及该模型

@model Project.Models.PacketViewModel 

现在,您可以遍历模型:

 @{

        foreach (var item in Model.Items)
        {
           //do what you want to do here for example 
           <b> @item.ItemTitle </b>
        }

  }
0赞 KevinLamb 7/11/2019 #2

只要你在视图的开头引用模型,你就应该没问题:

@model ProjectNameSpace.Models.PacketViewModel

现在,如果您使用循环,则所有输入在 HTML 中都将具有相同的 and 属性:foreachnameid

@foreach (var item in Model.items)
{
    <label asp-for="@item.ItemTitle" class="control-label"> </label>
    <input asp-for="@item.ItemTitle" class="form-control" />
}

因此,我们必须改用循环:for

@for (var i = 0; i < Model.items.Count(); i++)
{
    <label asp-for="@Model.items[i].ItemTitle" class="control-label"> </label>
    <input asp-for="@Model.items[i].ItemTitle" class="form-control" />
}

使用 for 循环将为输入提供 HTML 中的唯一属性和属性。idname

评论

0赞 bootsy 7/11/2019
不确定 List<PacketViewModel> @model是否在视图中起作用,因为 Packet.Meeting 不是列表,而是 Item.ItemTitle。如果我使用模型 List<PacketViewModel>则 Packet.Meeting 不包含模型 List<PacketViewModel 的定义>
0赞 KevinLamb 7/11/2019
@bootsy啊,我明白了,所以我的第二个例子是你需要的。我会更新我的答案
0赞 KevinLamb 7/15/2019
@bootsy 运气好吗?