0 votes

Comment ajouter une valeur par défaut à une propriété personnalisée de profil ASP.NET ?

Je sais que vous pouvez ajouter des valeurs par défaut en utilisant le web.config comme ceci :

<profile>
    <properties>
        <add name="AreCool" type="System.Boolean" defaultValue="False" />
    </properties>
</profile>

mais j'ai le profil hérité d'une classe :

<profile inherits="CustomProfile" defaultProvider="CustomProfileProvider" enabled="true">
  <providers>
    <clear />
    <add name="CustomProfileProvider" type="CustomProfileProvider" />
  </providers>
</profile>

Voici la classe :

Public Class CustomProfile
    Inherits ProfileBase

    Public Property AreCool() As Boolean
        Get
            Return Me.GetPropertyValue("AreCool")
        End Get
        Set(ByVal value As Boolean)
            Me.SetPropertyValue("AreCool", value)
        End Set
    End Property

End Class

Je ne sais pas comment définir la valeur par défaut de la propriété. Il provoque des erreurs car, sans valeur par défaut, il utilise une chaîne vide, qui ne peut pas être convertie en booléen. J'ai essayé d'ajouter <DefaultSettingValue("False")> _ mais ça n'a pas semblé faire de différence.

J'utilise également un ProfileProvider personnalisé ( CustomProfileProvider ).

0voto

Tommy Points 17332

Juste une idée, pouvez-vous faire quelque chose comme ceci ou une variation (c'est-à-dire qu'au lieu de .length, vous pouvez utiliser dbnull.value() ou n'importe quel autre moyen de vérifier s'il s'agit d'un élément réel ?

Modification du code pour gérer les paramètres vides

Classe publique CustomProfile Hérite de ProfileBase

Dim _outBool as boolean
Public Property AreCool() As Boolean 
    Get 
        Return Me.GetPropertyValue("AreCool")
    End Get 
    Set(ByVal value As Object) 
         ''if the value can be parsed to boolean, set AreCool to value, else default to false''
         If([Boolean].TryParse(value, outBool) Then
            Me.SetPropertyValue("AreCool", value)
        Else
            Me.SetPropertyValue("AreCool", False)
        End If

    End Set 
End Property 

Classe de fin

0voto

NightOwl888 Points 4622

La façon typique dont Microsoft procède dans l'ensemble du cadre .NET consiste à utiliser la partie get pour vérifier si la valeur peut être convertie et à renvoyer la valeur par défaut si ce n'est pas le cas. Par exemple :

Public Class CustomProfile 
    Inherits ProfileBase 

    Public Property AreCool() As Boolean 
        Get 
            Dim o as Object = Me.GetPropertyValue("AreCool") 
            If TypeOf o Is Boolean Then
                Return CBool(o)
            End If
            Return False 'Return the default
        End Get 
        Set(ByVal value As Boolean) 
            Me.SetPropertyValue("AreCool", value) 
        End Set 
    End Property 

End Class

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X