Динамические данные ASP.Net - проверка типа данных - PullRequest
1 голос
/ 02 марта 2010

Динамический вопрос данных:

У меня есть 2 поля типа Nullable<DateTime> на моей модели

Когда я использую форму вставки и ввожу строку для мусора, например «sdfsdfas» для даты, которая выдает мне ужасное сообщение об ошибке

Невозможно преобразовать входную строку 'rtgh' в тип 'System.Nullable`1 [[System.DateTime, mscorlib, Версия = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089]]'.

Итак, я создал класс MetaData следующим образом, чтобы попытаться получить более дружественную ошибку

[MetadataType(typeof(RuleMetadata))]
    public partial class Rule
    {
        public class RuleMetadata
        {


            [ScaffoldColumn(false)]
            public Guid RuleId;

            // tried this overload
            [DataType("Some error")]
            public Nullable<DateTime> ValidFrom;

            // tried this overload
            [DataType(DataType.Date)]
            public Nullable<DateTime> ValidTo;
        }
    }

Но это полностью игнорируется, и я получаю ужасную ошибку, как и раньше

что я делаю не так?

1 Ответ

1 голос
/ 08 марта 2010

в конечном итоге сделал это, создав пользовательский атрибут

Похоже на излишество для фреймворка, который предназначен для автоматизации вещей для вас

 [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
    sealed class DateFormatAttribute : ValidationAttribute
    {
        public override bool IsValid(object value)
        {
            DateTime dt;
            return DateTime.TryParse(value.ToString(), out dt);
        }
    }

затем применил атрибут к моему классу метаданных

[DateFormat(ErrorMessage = "Valid From must be a valid date format")]
            public DateTime? ValidFrom;
...