格式化匿名对象中集合的日期
本文关键字:集合 日期 对象 格式化 | 更新日期: 2023-09-27 18:18:05
我得到了一个业务层,它返回一个匿名对象,该对象具有具有日期的行集合。我想获得日期的区域格式,但我不想将区域设置传递到业务层,而是将格式保留在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.
}
我想做什么。
获取匿名类型的行集合,找到日期列并使用
格式化它CreateDate = c.CreateDate.ToString("d", dtfi)
我有一个业务层,它返回一个匿名对象
这可能是需要修复的第一件事,并将此匿名对象替换为强类型模型,这将大大简化域模型到视图模型的映射,以便执行所需的格式化。
你不能。您需要创建一个具有与匿名对象相同属性的具体类,并传回YourNewClass
而不是object
。
业务层返回匿名对象的原因肯定是模糊的,您应该首先解决这个问题。但如果不能,最好的方法是将每个元素解析为DateTime;然后在剩下的行中重用这些信息。