在视图中显示之前修改值?

时间:2016-02-25 12:19:36

标签: c# asp.net-mvc-4 datetime lambda

我有一个供稿表

Id  Message     Created
1   aaa         2016-02-25 12:18:51
2   bbb         2016-02-24 12:18:51
3   ccc         2015-02-25 12:18:51

我可以获得像这样的所有值

    public ActionResult Index()
    {            
        using (var db = new ApplicationDbContext())
        {
            var feeds = db.Feeds.ToList();

            return View(feeds);
        }
    }

我创建了一个类,可以将日期从datetime更改为例如" 1天前"。这很好用

var myTime = DateExtension.TimeAgo(DateTime.Parse("2016-02-25 12:18:51"));

我希望在返回视图之前,在feed的帮助下修改DateExtension.TimeAgo中的所有日期。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

试试这个:

return View(
    feeds.Select(x=>
    new Feed{
       Id=x.Id, 
       Message=x.Message, 
       Created=DateExtension.TimeAgo(DateTime.Parse(x.Created))
   }).toList());

在哪里为您的班级提供相同的字段

答案 1 :(得分:0)

在视图中使用FeedDisplayModel类

public class Class1TestController
{
    public ActionResult Index()
    {
        using (var db = new ApplicationDbContext())
        {
            var feeds = db.Feeds.Select(itm=>new FeedDisplayModel(itm)).ToList();

            return View(feeds);
        }
    }

}
class Feed
{
    public DateTime Created { get; set; }
    public int Id { get; set;}
    public string Message { get; set;}

}
class FeedDisplayModel : Feed
{
    public string Ago { get { return Created.TimeAgo(); } }

    public FeedDisplayModel(Feed itm){
        this.Created=itm.Created;
        this.Id=itm.Id;
        this.Message=itm.Message;
    }
}

public static class DateExtension
{
    public static string TimeAgo(this DateTime dt)
    {
        return "your implementation of ";
    }
}