我正在开发一个asp.net mvc 5应用程序,在其中尝试设置dd / MM / yyyy格式的验证,我一直在努力寻找合适的解决方案,但没有成功,我想要什么接受:
24/01/2016
但它将验证消息显示为:
字段JoiningDate必须是日期。
这是我尝试过的:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime JoiningDate { get; set; }
另外,我希望它以dd / MM / yyyy格式在用户端的任何地方显示日期,但这是我的问题的第二部分,首先,它至少应允许输入有效的日期。我卡在这一个,任何帮助,将深深的感谢,我已经找遍了,但我没有能够得到的地步,在此先感谢:)
我得到了答案,我使用了自定义ModelBinder,以解决此问题,
首先,我在Global.asax的application_start方法中注册了这一行:
ModelBinders.Binders.Add(typeof(DateTime?), new MyDateTimeModelBinder());
这是自定义ModelBinder:
public class MyDateTimeModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var displayFormat = bindingContext.ModelMetadata.DisplayFormatString;
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (!string.IsNullOrEmpty(displayFormat) && value != null)
{
DateTime date;
displayFormat = displayFormat.Replace("{0:", string.Empty).Replace("}", string.Empty);
// use the format specified in the DisplayFormat attribute to parse the date
if (DateTime.TryParseExact(value.AttemptedValue, displayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
{
return date;
}
else
{
bindingContext.ModelState.AddModelError(
bindingContext.ModelName,
string.Format("{0} is an invalid date format", value.AttemptedValue)
);
}
}
return base.BindModel(controllerContext, bindingContext);
}
}
感谢Darin Dimitrov的回答!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句