我有一个业务层,它返回一个匿名对象,该对象具有一组具有日期的行。我想获得日期的区域格式,但我不想将区域设置传递到业务层,而是将格式保存在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)
答案 0 :(得分:2)
我有一个返回匿名对象的业务层
这可能是需要修复的第一件事,并用强类型模型替换这个匿名对象,这将极大地简化此域模型到视图模型的映射,以便执行所需的格式化。
答案 1 :(得分:1)
你做不到。您需要创建一个具有与匿名对象相同属性的具体类,并传回YourNewClass
而不是object
。
答案 2 :(得分:0)
为什么业务层返回一个匿名对象肯定是模糊的,你应该先修复它。但是,如果你不能得到最好的镜头,那就是将每个元素解析为DateTime;然后将该信息重新用于其余行。