#c# #asp.net-mvc #model-binding
#c# #asp.net-mvc #привязка к модели
Вопрос:
У меня есть следующий пользовательский ModelBinder для DateTime:
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult value = null;
try
{
value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
return DateTime.ParseExact(value.AttemptedValue, _customFormat, CultureInfo.InvariantCulture);
}
catch (Exception)
{
// If there is a place where DateTime got used which "Bypassed" our EditorTemplate, it means the format will be the default format.
// So let's allow the Model Binder to at least try to Parse the date with the default format.
return DateTime.Parse(value.AttemptedValue);
}
}
Если я укажу аргумент в своем действии как nullable DateTime ( DateTime? dob
), ModelBinder не запускается.
Как я могу заставить ModelBinder работать для nullable DateTime?
Ответ №1:
Вам нужно зарегистрировать его дважды, вот так:
ModelBinders.Binders.Add(typeof (DateTime), new DateTimeModelBinder());
ModelBinders.Binders.Add(typeof (DateTime?), new DateTimeModelBinder());
Комментарии:
1. Я только что осознал свою ошибку и собирался опубликовать ответ на свой собственный вопрос. Спасибо