Да.Добавьте пользовательский класс атрибута, как показано ниже
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class DateAttribute : DataTypeAttribute
{
public DateAttribute() : base(DataType.Date) { }
public override string FormatErrorMessage(string name)
{
if (ErrorMessage == null && ErrorMessageResourceName == null)
{
ErrorMessage = ValidatorResources.DateAttribute_Invalid;
}
return base.FormatErrorMessage(name);
}
public override bool IsValid(object value)
{
if (value == null) return true;
DateTime retDate;
return DateTime.TryParse(Convert.ToString(value), out retDate);
}
}
Создать класс правила проверки клиента
public class ModelClientValidationDateRule:ModelClientValidationRule
{
public ModelClientValidationDateRule(string errorMessage)
{
ErrorMessage = errorMessage;
ValidationType = "date";
}
}
Создайте класс адаптера, который подключает пользовательский атрибут и правило проверки клиента, как показано ниже.Убедитесь, что вы добавили ссылку на указанный выше класс атрибута
public class DateAttributeAdapter : DataAnnotationsModelValidator<DateAttribute>
{
public DateAttributeAdapter(ModelMetadata metadata, ControllerContext context, DateAttribute attribute)
: base(metadata, context, attribute) { }
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
return new[] { new ModelClientValidationDateRule(ErrorMessage) };
}
}
Затем измените файл global.asax
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DateAttribute), typeof(DateAttributeAdapter));
}
Добавление атрибута в класс модели, как показано ниже
[Date]
public object DateReleased { get; set; }
Добавление следующего кода на стороне клиента в представлении
<script type="text/javascript" src="../../Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.validate.js"></script>
<script type="text/javascript" src="../../Scripts/MicrosoftAjax.js"></script>
<script type="text/javascript" src="../../Scripts/MicrosoftMvcAjax.js"></script>
<script type="text/javascript" src="../../Scripts/MicrosoftMvcValidation.js"></script>
<script type="text/javascript">
Sys.Mvc.ValidatorRegistry.validators["date"] = function (rule) {
// initialization code can go here.
return function (value, context) {
if (value.length > 0) {
var d = new Date(value);
if (!isNaN(d))
return true;
return rule.ErrorMessage;
}
else {
return true;
}
};
};
Надеюсь, это поможет вам.