在 MVC C# 中迭代列表中的多个项目
Iterating multiple items from list in MVC C#
我不确定如何在 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...
我不知道如何在这个视图中执行此操作,有人可以帮助我吗?
首先,构建一个新的 class 来保存您的数据。
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>
因此,您需要为其创建一个 class,因为您的方法毫无意义。
让我们创建一个 class:
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.Models 命名空间中):
@model IEnumerable <xxx.Models.MyModel>
现在您可以使用智能感知遍历整个过程,例如:
@foreach (var item in Model)
{
<p>item.Topic</p>
<p>item.Signature</p>
<p>item.Time</p>
}
我不确定如何在 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...
我不知道如何在这个视图中执行此操作,有人可以帮助我吗?
首先,构建一个新的 class 来保存您的数据。
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>
因此,您需要为其创建一个 class,因为您的方法毫无意义。 让我们创建一个 class:
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.Models 命名空间中):
@model IEnumerable <xxx.Models.MyModel>
现在您可以使用智能感知遍历整个过程,例如:
@foreach (var item in Model)
{
<p>item.Topic</p>
<p>item.Signature</p>
<p>item.Time</p>
}