2010-08-05 2 views
1

J'ai un projet de services RIA Silverlight 4 sur lequel je travaille et je ne parviens pas à valider une entrée de texte Windows enfant. J'ai une boîte de texte tel que celui-ci:Problème lors de la validation des données dans les services RIA Silverlight 4

<TextBox Height="23" Name="txtSummary" Width="Auto" Grid.Row="2" Grid.Column="4" Text="{Binding DocumentView.Summary, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"/> 

La valeur DocumentView.Summary est obtenue à partir de mon modèle Voir:

public DocumentSubmittedView DocumentView 
    { 
     get { return _DocumentView; } 
     set 
     { 
      if (_DocumentView != value) 
      { 
       _DocumentView = value; 
       OnPropertyChanged("DocumentView"); 
      } 
     } 
    } 

Et DocumentSubmittedView est sa propre classe entité personnalisée:

namespace Data.Model.Entities { 

public class DocumentSubmittedView { 
    [Key] 
    public int DocID { get; set; } 

    [Required(ErrorMessage = "Summary Required")] 
    public string Summary { get; set; }  
} 

}

Y a-t-il une raison pour laquelle je ne peux obtenir aucun type de message d'erreur? ge avec les informations ci-dessus?

Merci.

Répondre

0

De MSDN:

Actuellement, le contrôle DataGrid est le seul contrôle qui applique automatiquement les attributs de validation. Pour un exemple d'utilisation d'un contrôle DataGrid avec une classe qui contient des attributs de validation, consultez l'exemple de grille de données ci-dessous. Lorsque vous n'utilisez pas le contrôle DataGrid, vous devez valider manuellement les valeurs.

Si vous n'utilisez pas DataGrid

manuellement Validation des

Lorsque vous n'utilisez pas le contrôle DataGrid pour fournir l'interface pour éditer des données, les attributs de validation ne sont pas automatiquement appliqué. Cependant, vous pouvez appliquer manuellement le test de validation en utilisant la classe Validator. Vous pouvez appeler la méthode ValidateProperty sur l'accesseur set d'une propriété pour vérifier la valeur par rapport aux attributs de validation de la propriété. Vous devez également définir les propriétés ValidatesOnExceptions et NotifyOnValidationError sur true lorsque la liaison de données reçoit des exceptions de validation des attributs de validation. Pour un exemple d'application manuelle de la validation, voir l'exemple de liaison de données ci-dessous.

0

Salut Je ne vois pas le code complet mais ... pourrait-il que la création de l'objet DocumentSubmittedView le résumé est nul. Le OnPropertyChanged ne sera viré que si le résumé change ... puisque vous n'avez rien entré, il n'y a pas de raison de changer. Mais si vous entrez quelque chose, vous fournissez un résumé, puis votre règle de validation est positive et il n'y a pas de raison pour une erreur de validation. Qu'est-ce que vous pouvez faire est d'entrer du texte dans le résumé, puis supprimez-le ... Et maintenant vous pouvez voir si votre règle fonctionne ...

mais ce n'est que du haut de la tête soit de voir votre peu lignes ..

Il peut être utile d'attribuer une chaîne.Vide à la propriété Résumé dans le constructeur de la viewmodel HTH

1

Si vous utilisez ENTITES, qui ne sont pas générés mon cadre d'entité ou Linq2Sql, puis ajouter une logique de validation à ses setters, comme cette coutume:

[Range(0,1000)] 
[DataMember] 
public int Population 
{ 
    get { return _population; } 
    set { 
     Validator.ValidateProperty(value, 
      new ValidationContext(this, null, null) 
       { MemberName = "Population" }); 
     _population = value; 
     RaisePropertyChanged("Population"); 
    } 
} 

et drapeaux de liaison sur l'élément de texte dans votre fichier XAML:

<TextBox Text="{Binding Population, 
Mode=TwoWay, NotifyOnValidationError=True,ValidatesOnExceptions=True}" /> 
Questions connexes