在我的ASP.NET MVC 5 dwith EF 6项目中,我有一个数据库,其中日期时间格式存储为“ dd-MM-yyyy”之类的字符串。用户可以随时更改此格式。用户将在视图的日期字段中使用给定的格式。但是什么时候他们会发布。它会自动绑定为该属性的DateTime。我通过以下代码静态处理它
[DataType(DataType.Time), DisplayFormat(DataFormatString = "{HH:mm}", ApplyFormatInEditMode = true)]
public DateTime? EndingTime { get; set; }
public string EndingTimeValue
{
get
{
return EndingTime.HasValue ? EndingTime.Value.ToString("HH:mm") : string.Empty;
}
set
{
EndingTime = DateTime.Parse(value);
}
}
但我知道这不是最好的方法。可能需要模型绑定器或过滤器或任何种类的自定义属性。如果您使用示例代码为我提供了有效的解决方案,将对我有很大的帮助。提前致谢。
注意:我正在使用剃刀视图引擎。我的解决方案包含7个项目。因此,没有机会在模型中使用Session。再次,我有一个使用实体框架的基本存储库类。
关于这个问题,我已经尝试了许多选择。现在,我正在创建一个动作过滤器,以捕获所有DateTime和可空的DateTime字段。我在这里提供活页夹。
public class DateTimeBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
DateTime date;
var displayFormat = SmartSession.DateTimeFormat;
if (DateTime.TryParseExact(value.AttemptedValue, displayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
return date;
}
else
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName,"Invalid Format");
}
return base.BindModel(controllerContext, bindingContext);
}
}
在视图中,代码我使用相同的日期格式来格式化日期。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句