我正在使用MVC + EF
我有一个Feed xml文件网址,每7分钟更新一次项目,每次添加新项目时我将所有项目检索到列表变量,然后我将这些变量添加到我的数据库表中。之后,我从数据库表中填充一个新的列表变量,它是我的ViewModel。然后我在我的视图中声明了ViewModel,这是一个.cshtml文件并循环遍历所有对象并显示它们。
如何确保最新的项目位于顶部而不是底部,并且数字的显示顺序正确?
这是我在cshtml笔记中显示我使用++编号的项目的方式,所以最新项目需要为1依旧::
@model Project.Viewmodel.ItemViewModel
@{
int number = 0;
}
<div id="news-container">
@foreach (var item in Model.NewsList.OrderByDescending(n => n.PubDate))
{
<div class="grid">
<div class="number">
<p class="number-data">@(++number)</p>
</div>
<p class="news-title">@(item.Title)</p>
<div class="item-content">
<div class="imgholder">
<img src="@item.Imageurl" />
<p class="news-description">
@(item.Description)
<br />@(item.PubDate) |
<a href="@item.link">Source</a>
</p>
</div>
</div>
</div>
}
</div>
这就是我如何填充我在.cshtml文件中使用的viewmodel来迭代并显示项目
private void FillProductToModel(ItemViewModel model, News news)
{
var productViewModel = new NewsViewModel
{
Description = news.Description,
NewsId = news.Id,
Title = news.Title,
link = news.Link,
Imageurl = news.Image,
PubDate = news.Date,
};
model.NewsList.Add(productViewModel);
}
如果你检查这张图片是如何与数字一起显示的,那就错了。
如果您看到箭头应该如何,我该如何实现呢?
赞赏任何形式的帮助:)
注意:当我删除.OrderByDescending
时,每个网格上的数字都是正确的。但我需要.OrderByDescending
,因为我想在最上面添加最新的项目。
答案 0 :(得分:0)
查看草图我假设您float: left
课程有display: inline-block
或grid
。添加float: right
可能会有所帮助。
如果这没有用,请发布你的CSS。
答案 1 :(得分:0)
只是一个简单的说法..
您正在将NewsViewModel传递给视图并在ItemViewModel ..y上执行迭代? 你认为这可能是问题的原因..
此致
答案 2 :(得分:0)
您可以使用CompareTo方法对新闻列表进行排序:
model.NewsList.Sort((a, b) => b.PubDate.Date.CompareTo(a.PubDate.Date));
如果列表排序正确,您只需使用CSS即可在每行显示两个项目的新闻列表。请参阅此fiddle。
这个小提琴是一个经过修改的小提琴,是我之前提出的类似question提供的。
答案 3 :(得分:0)
试试这个:
@model Project.Viewmodel.ItemViewModel
@{
int number = 0;
var NewsItems=Model.NewsList.OrderByDescending(n => n.PubDate).ToList();
}
<div id="news-container">
@foreach (var item in NewsItems)
{
<div class="grid">
<div class="number">
<p class="number-data">@(++number)</p>
</div>
<p class="news-title">@(item.Title)</p>
<div class="item-content">
<div class="imgholder">
<img src="@item.Imageurl" />
<p class="news-description">
@(item.Description)
<br />@(item.PubDate) |
<a href="@item.link">Source</a>
</p>
</div>
</div>
</div>
}
</div>
答案 4 :(得分:-1)
试试这个
private void FillProductToModel(ItemViewModel model, News news)
{
var newList = list.OrderByDescending(x => x.News.Date).toList();
var productViewModel = new NewsViewModel
{
Description = newList .Description,
NewsId = newList .Id,
Title = newList .Title,
link = newList .Link,
Imageurl = newList .Image,
PubDate = newList .Date,
};
model.NewsList.Add(productViewModel);