Я боюсь, ASP.NET MVC 3 никогда не создает data-val-date, вот список атрибутов, которые могут быть созданы:
- Данные-валин-номер
- Данные-валин-equalto
- Данные-валин-диапазон
- Данные-Val-регулярное выражение
- Данные-валин-пульт
- Данные-валин-требуется
- Данные-валин-длина
Вы можете создать дополнительный атрибут ModelValidatorProvider для атрибута DataType следующим образом:
public class ClientDataTypeNameModelValidatorProvider : ModelValidatorProvider
{
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context)
{
if (metadata == null)
throw new ArgumentNullException("metadata");
if (context == null)
throw new ArgumentNullException("context");
if (metadata.DataTypeName == "Date")
yield return new DateModelValidator(metadata, context);
}
internal sealed class DateModelValidator : ModelValidator
{
public DateModelValidator(ModelMetadata metadata, ControllerContext controllerContext)
: base(metadata, controllerContext)
{ }
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
ModelClientValidationRule rule = new ModelClientValidationRule()
{
ValidationType = "date",
ErrorMessage = "[Put your error message here]"
};
return new ModelClientValidationRule[] { rule };
}
public override IEnumerable<ModelValidationResult> Validate(object container)
{
// No server-side validation logic
return Enumerable.Empty<ModelValidationResult>();
}
}
}
И зарегистрируйте его в своем Global.asax следующим образом:
ModelValidatorProviders.Providers.Add(new ClientDataTypeNameModelValidatorProvider());
Это должно обеспечить поддержку клиента для DataType.Date, но вы должны помнить, что он будет работать только с проверкой jQuery, поскольку у проверки Microsoft нет правила для даты.