2010-03-02 6 views
1

dynamique question de données:ASP.Net Dynamic Data - DataType Validation

J'ai 2 champs de type Nullable<DateTime> sur mon modèle

Lorsque j'utilise la forme d'insertion et entrer dans une chaîne de déchets par exemple "sdfsdfas" pour une date, il me donne un message d'erreur moche

Impossible de convertir la chaîne d'entrée 'rtgh' en type 'System.Nullable`1 [[System.DateTime, mscorlib, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089]] '.

J'ai donc créé une classe MetaData comme suit pour essayer d'obtenir une erreur plus conviviale

[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; 
     } 
    } 

Mais il est totalement ignoré et je reçois l'erreur laid comme avant

que suis-je mal faire?

Répondre

1

finalement fait cela en créant un CustomAttribute

On dirait surpuissant pour un cadre qui est destiné à des choses autmate pour vous

[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); 
     } 
    } 

alors appliqué l'attribut à mon MetaData classe

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