2010-06-16 3 views
0

Je souhaite transmettre une propriété de type System.Uri à un WebControl depuis une page ASPX.Propriété URI ASP.NET UserControl

Est-il possible de transférer la propriété comme ça:

<MyUserControl id="myusercontrol" runat="server"> 
    <MyUrlProperty> 
     <System.Uri>http://myurl.com/</System.Uri> 
    </MyUrlProperty> 
</MyUserControl> 

au lieu de:

<MyUserControl id="myusercontrol" runat="server" MyUrlProperty="http://myurl.com/" /> 

qui ne peut être casté de System.String à System.Uri

EDIT

Le contrôle est une classe scellée et je d on ne veut pas le modifier ou écrire son propre contrôle. Le but est de définir la propriété url qui est du type System.Uri et non System.String.

Répondre

1

Pour répondre à votre question actuelle: non, vous ne pouvez pas modifier la manière dont vous transmettez la valeur d'une propriété, comme le montre votre exemple, sans modifier le code derrière la définition de cette propriété. Maintenant sur votre numéro actuel ...

Je n'ai eu aucun problème pour passer une chaîne dans une propriété de type URI sur mon contrôle utilisateur et la faire convertir automatiquement de chaîne en uri. Es-tu sûr que l'Uri que tu passes est valide? Si la chaîne que vous transmettez, comme dans un scénario de databinding, n'était pas correctement formatée, je pourrais voir ce problème apparaître.

Exemple de code I utilisé pour tester:

<uc1:WebUserControl ID="WebUserControl1" runat="server" MyUrlProperty="http://www.example.com" /> 

code Derrière:

Partial Class WebUserControl 
    Inherits System.Web.UI.UserControl 

    Public Property MyUrlProperty() As Uri 
     Get 
      Dim o As Object = ViewState("m") 
      If o IsNot Nothing Then 
       Return DirectCast(o, Uri) 
      Else 
       Return Nothing 
      End If 
     End Get 
     Set(ByVal value As Uri) 
      ViewState("m") = value 
     End Set 
    End Property 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Response.Write(MyUrlProperty) 
    End Sub 
End Class 

--Peter

+0

Le problème est que le contrôle est une classe scellée et je ne peux pas modifier il. Je veux juste utiliser ce contrôle et définir la propriété donnée du type System.Uri. Donc, écrire un propre contrôle n'est pas une option. – apparat

+0

@Roedel: J'ai changé ma réponse, voir si ça aide plus que le dernier. – Peter

+0

Salut Patricker. C'est intéressant, je vais devoir vérifier la valeur transmise à la propriété. Si le converti fonctionne pour vous, il doit être de mon côté. Peut-être qu'il y a un signe invalide dedans ou quelque chose. Je te le dirai dès que je l'aurai vérifié. – apparat

Questions connexes