我的目标是:
>以d MMM yyyy格式显示所有日期
>首页加载时的默认值/现有值
>用户输入的任何内容,然后通过服务器往返
>将class =“behavior-date-picker”添加到输入字段,以便我可以显示jQuery日期选择器
>构建在System.ComponentModel.DataAnnotations基础结构之上
>在服务器往返后仍然显示错误的数据值,如12 Joone 2010,并显示相应的验证错误消息
这是一个示例模型:
public class DebugDatesStub { [DataType(DataType.Date)] public DateTimeOffset Date { get; set; } }
DisplayFormat属性不能解决我的场景,因为它不适用于往返值. (用户填写表单,提交表单,由于某些服务器端验证问题而返回相同的表单 – 日期仍以他们输入的原始格式显示,而不是重新格式化.)
解决方法
我遇到了类似的问题并解决了类似的问题(代码从WebGrid中取样,希望它会给你一个想法):
@{ var viewDictionary = new ViewDataDictionary<DebugDatesStub>(new DebugDatesStub()); } ... ModelMetadata.FromLambdaExpression(d => d.DateTimeOffset,viewDictionary).PropertyName,ModelMetadata.FromLambdaExpression(d => d.DateTimeOffset,viewDictionary).DisplayName,format: (item) => { return new HtmlString(item.DateTimeOffset.ToString("MMM yyyy hh:mm:ss")); }) ...