【发布时间】:2012-11-29 04:06:39
【问题描述】:
我有一个在用户登录时实例化的用户对象,这个对象存储了所有用户的设置:
public class SiteUser
{
public string LoginId { get; set; }
public string Name { get; set; }
public DateTime PasswordChangedOn { get; set; }
public string Language { get; set; }
public string DateFormat { get; set; }
public string RoleName { get; set; }
public ICollection<SitePermission> SitePermissions { get; set; }
}
还有一个UserContext类,用来存储和管理用户的会话
public class UserContext
{
public SiteUser SiteUser { get; internal set; }
public static UserContext Current
{
get
{
if (HttpContext.Current == null || HttpContext.Current.Session == null)
return null;
if (HttpContext.Current.Session["UserContext"] == null)
CreateUserContext();
return (UserContext)HttpContext.Current.Session["UserContext"];
}
}
}
现在,每当我必须显示日期时,无论是在网格中还是在文本字段中,我总是希望引用 SiteUser 对象的 DateFormat 属性。
在我看到的大多数示例中,数据注释都用于定义日期的格式:
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime PasswordChangedOn { get; set; }
我试过修改成这样:
[DataType(DataType.Date), DisplayFormat(DataFormatString = UserContext.Current.SiteUser.DateFormat, ApplyFormatInEditMode = true)]
但它不起作用,给我一个错误,指出属性参数必须是一个常量。
那么在 MVC 应用程序中将日期格式设置为模型的最佳方法是什么?
【问题讨论】:
标签: c# model-view-controller datetime model data-annotations