簡體   English   中英

從MVC C#中的列表迭代多個項目

[英]Iterating multiple items from list in MVC C#

我不確定如何在MVC中執行此操作,在普通代碼中,我只會在循環中迭代並編寫該項目,但是我在MVC中卻無法執行此操作。 在此程序中,我正在閱讀《魔獸世界》站點的RSS feed。 我有這種方法:

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>

但是我需要這樣迭代:

來自“ list1”的“ item1” =>來自“ list2”的“ item1” =>來自“ list3”的“ item1” =>來自“ list1”的“ item2” => ETC ...

我不知道如何在此視圖中執行此操作,有人可以幫助我嗎?

因此,您需要為其創建一個類,因為您的方法沒有意義。 讓我們創建一個類:

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

稍后,讓我們將Controller更改為:

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.Models命名空間中):

@model  IEnumerable <xxx.Models.MyModel>

現在,您可以使用Intellisense遍歷整個過程:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM