Если я правильно понимаю, вы хотите изменить поведение DateTime
во время процесса привязки. Вместо использования атрибута я бы использовал ModelBinder для изменения формата строки даты.
Я сделал нечто подобное для проблемы при преобразовании десятичных значений из нескольких культур: (код взят из сообщения в блоге, это не мое, но я не помню источник. Извините)
using System;
using System.Globalization;
using System.Web.Mvc;
public class DecimalModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
ModelState modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture);
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}
bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return actualValue;
}
}
в global.asax вы регистрируете подшивку
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
}
Imo, это лучший подход, и вам не нужно ставить атрибут для каждого действия