格式化匿名对象中集合的日期

时间:2013-06-12 11:26:39

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

我有一个业务层,它返回一个匿名对象,该对象具有一组具有日期的行。我想获得日期的区域格式,但我不想将区域设置传递到业务层,而是将格式保存在MVC网站的Controller Action中。

商务层:

public object GetItems(int catID)
{
 var data = GetDbItems(catId).ToList();
 var Items = new 
         {
            total = data.Count(),
            page = 1,
            rows = (from c in data
                    select new {
                       ID = c.id,
                       Desc = c.desc,
                       CreationDate = c.CreationDate
                    })
         };

 return Items;
}

回到控制器的Action方法中我想格式化匿名类型内集合中的日期。我怎么能这样做?

public JsonResult GetItems(int catID)
{
 string cultureString = HttpContext.Request.UserLanguages.FirstOrDefault();
 DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(cultureString).DateTimeFormat;
 var items = bizLayer.GetItems(catID);
 var test = from i in items
       select i.rows;  // ????  doesn't know about this collection yet.
 }

我想做什么。

获取匿名类型的rows集合,找到日期列并使用

格式化它
CreateDate = c.CreateDate.ToString("d", dtfi)

3 个答案:

答案 0 :(得分:2)

  

我有一个返回匿名对象的业务层

这可能是需要修复的第一件事,并用强类型模型替换这个匿名对象,这将极大地简化此域模型到视图模型的映射,以便执行所需的格式化。

答案 1 :(得分:1)

你做不到。您需要创建一个具有与匿名对象相同属性的具体类,并传回YourNewClass而不是object

答案 2 :(得分:0)

为什么业务层返回一个匿名对象肯定是模糊的,你应该先修复它。但是,如果你不能得到最好的镜头,那就是将每个元素解析为DateTime;然后将该信息重新用于其余行。