Valider la propriété WebPart personnalisée définie par un composant ToolPart personnalisé ?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/59874

  •  10-12-2019
  •  | 
  •  

Question

Je construis un composant WebPart personnalisé avec un composant outil personnalisé pour modifier ses propriétés personnalisées.

Je me demande où dois-je valider les valeurs.

Je peux voir deux endroits où je peux valider.

Soit dans le bien lui-même :

    private int? m_MaxNumberOfSomething;

    [Browsable(false)]
    [Category(Constants.WebPartsExtendedPropertiesCategoryName)]
    [DefaultValue(5)]
    [WebPartStorage(Storage.Personal)]
    public int? MaxNumberOfSomething
    {
        get
        {
            return m_MaxNumberOfSomething;
        }
        set
        {
            if (value.HasValue && value < 1) throw new WebPartPageUserException("At least one !");
            m_MaxNumberOfSomething = value;
        }
    }

Ou dans les changements d'application de la méthode toolpart :

    public override void ApplyChanges()
    {
        int maxNumberOfSomething;
        if (!int.TryParse(txtMaxNumberOfSomething.Text, out maxNumberOfSomething))
        {
            throw new WebPartPageUserException("At least one");
        }
        ParentWebPart.MaxNumberOfSomething = maxNumberOfSomething;
    }

Existe-t-il une 3ème voie ?

Quel est le bon endroit pour ajouter une telle validation ?

Était-ce utile?

La solution

je le ferais dans le setter.

Comme vous lancez une exception de toute façon, il est plus propre de ne pas laisser l'utilisateur set la valeur en premier lieu.Si vous faisiez la validation uniquement dans le ApplyChanges méthode, un autre code aurait pu fonctionner avec la valeur déjà mal définie.

Valider dans set, donc l'utilisateur n'est même pas autorisé à écrire des éléments non valides dans votre variable. Voici un article de blog montrant exactement cette méthode, mais vous le faites correctement quand même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top