如何确保在添加的每个网格上正确显示该数字?

时间:2013-05-03 15:40:44

标签: c# asp.net-mvc asp.net-mvc-3 razor

我正在使用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);
}

如果你检查这张图片是如何与数字一起显示的,那就错了。

如果您看到箭头应该如何,我该如何实现呢?

enter image description here

赞赏任何形式的帮助:)

注意:当我删除.OrderByDescending时,每个网格上的数字都是正确的。但我需要.OrderByDescending,因为我想在最上面添加最新的项目。

5 个答案:

答案 0 :(得分:0)

查看草图我假设您float: left课程有display: inline-blockgrid。添加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);