在MVC c#中迭代列表中的多个项目

本文关键字:项目 迭代 MVC 列表 | 更新日期: 2023-09-27 18:04:56

我不确定如何在MVC中做到这一点,在正常代码中,我只是在循环中迭代并编写项目,但我在MVC中丢失了这一点。在这个程序中,我正在阅读来自魔兽世界网站的RSS提要。我有这个方法:

public ActionResult Bar()
{
    List<string> temat = new List<string>();
    List<string> podpis = new List<string>();
    List<DateTime> czas = new List<DateTime>();
    string url = "http://eu.battle.net/wow/en/feed/news";
    using (XmlReader reader = XmlReader.Create(url))
    {
        SyndicationFeed feed = SyndicationFeed.Load(reader);
        foreach (SyndicationItem item in feed.Items)
        {
            String subject = item.Title.Text;
            String summary = item.Summary.Text;
            DateTime date = item.PublishDate.DateTime;
            temat.Add(subject);
            podpis.Add(summary);
            czas.Add(czasy);
        }
    }
    reader.Close();
    ViewBag.tytul = temat;
    ViewBag.opis = podpis;
    ViewBag.c = czas;
    return PartialView("_Bar");
}

在我的partialView中,我可以像这样从ViewBag中获取每个项目:

<div class="row">
    @foreach (var o in ViewBag.opis)
    {
        <p>@Html.Raw(@o)</p>
    }
</div>

但是我需要这样迭代:

"item1" from "list1" => "item1" from "list2" => "item1" from "list3"=> "item2" from "list1" => ETC…

我不知道如何在这个视图中做这个,有人能帮我吗?

在MVC c#中迭代列表中的多个项目

所以,您需要为它创建一个类,因为您的方法没有意义。让我们创建一个类:

public class MyModel
{
  public string Topic { get; set; }
  public string Signature { get; set; }
  public DateTime Time { get; set; }
}

之后让我们把你的控制器改成这样:

public ActionResult Bar()
{
    List<MyModel> _model = new List<MyModel>();
    using (XmlReader reader = XmlReader.Create(url))
    {
        SyndicationFeed feed = SyndicationFeed.Load(reader);
        foreach (SyndicationItem item in feed.Items)
        {
            var newItem = new MyModel();
            newItem.Topic = item.Title.Text;
            newItem.Signature = item.Summary.Text;
            newItem.Time = item.PublishDate.DateTime;
            _model.Add(newItem);
        }
    }
    return PartialView("_Bar", _model); 
}

现在你已经在你的视图中有了强类型模型,所以只需在顶部添加一个命名空间(让我们假设MyModel在xxx。模型名称空间):

@model  IEnumerable <xxx.Models.MyModel>

现在你可以像这样用智能感知遍历它:

@foreach (var item in Model)
{
    <p>item.Topic</p>
    <p>item.Signature</p>
    <p>item.Time</p>
}

首先,构建一个新类来保存您的数据。

Class WOWClass
{
    public string temat {get;set;}
    public DateTime czas {get;set;}
}

然后填充一个WOWClass列表,而不是3个列表…

public ActionResult Bar()
{
    List<WOWClass> list = new List<WOWClass>();
    string url = "http://eu.battle.net/wow/en/feed/news";
    using (XmlReader reader = XmlReader.Create(url))
    {
        SyndicationFeed feed = SyndicationFeed.Load(reader);
        foreach (SyndicationItem item in feed.Items)
        {
            //populate your list
        }
    }
    return PartialView("_Bar", list);
}

最后是视图:

<div class="row">
    @foreach (var o in Model)
    {
        Temat: <p>@Html.Raw(o.temat)</p>
        Czas: <p>@Html.Raw(o.czas)</p>
    }
</div>