我有一个在用户登录时实例化的用户对象,该对象存储所有用户的设置:
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"];
}
}
}
现在,每当我必须显示日期时,无论是在网格中还是在文本字段中,我总是希望引用DateFormat
SiteUser 对象的属性。
在我看到的大多数示例中,数据注释用于定义日期格式,如下所示:
[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 应用程序中将日期格式设置为模型的最佳方法是什么?