2013-05-03 30 views
0

我正在使用MVC + EF如何确保数字在每个添加的网格上正确显示?

我有一个Feed xml文件url每7分钟更新一次item,每次添加一个新项目时我将所有项目都检索到列表变量,然后添加这些变量到我的数据库表。之后,我从数据库表中填充一个新的列表变量,这是我的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文件里面throught迭代和显示的项目

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因为我想要最新的最新添加项。

+0

你能设定与呈现的HTML一个jsfiddel。 – 2013-05-06 09:00:44

+0

和你的'PubDate'也是错误的顺序为6和5?也许你应该先检查你的'Model.NewsList.OrderByDescending(n => n.PubDate)'结果 – WiiMaxx 2013-05-06 13:04:31

回答

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> 
+0

谢谢迈克尔! – Obsivus 2013-05-08 18:19:59

+0

不客气......很高兴它的工作。我不太确定。 – 2013-05-08 19:33:25

0

看着你的素描,我假设你有float: leftdisplay: inline-blockgrid类。添加float: right可能会诀窍。

如果这没有帮助,请张贴你有CSS。

0

只是一个快字..

您传递NewsViewModel的视图和ItemViewModel进行迭代..y? 做u认为这可能是问题的原因..

问候

-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); 
0

你可以使用CompareTo方法排序,您的新闻列表:

model.NewsList.Sort((a, b) => b.PubDate.Date.CompareTo(a.PubDate.Date)); 

一旦你有正确的排序列表,你可以简单地使用CSS来显示新闻列表每行两项。看到这个fiddle

提琴是一个修改过的提供给我的类似question我问过。