2010-06-16 160 views
0

我想從System.Uri類型的屬性傳遞到一個aspx頁面內的WebControl。ASP.NET用戶控件Uri屬性

是否有可能通過這樣的屬性:的

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

代替:

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

不能從System.String要的System.Uri

鑄造編輯

該控件是一個密封類,我d不想修改它或者編寫自己的控件。目標是設置類型爲System.Uri而不是System.String的url-property。

回答

1

要回答你的實際問題:不,你不能改變你傳遞屬性值的方式,就像你的例子所顯示的那樣,而不改變如何定義該屬性的代碼。現在到你的實際問題...

我沒有任何問題將字符串傳遞到我的用戶控件上的URI類型的屬性,並將它從字符串自動轉換爲uri。你確定你通過的Uri是有效的嗎?如果您傳入的字符串(如數據綁定場景中)未正確格式化,則可能會出現此問題。

示例代碼我用來測試:

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

代碼背後:

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

的問題是,所述控制是一個密封類,我不能修改它。我只想使用此控件並設置System.Uri類型的給定屬性。所以編寫自己的控件不是一種選擇。 – apparat 2010-06-16 14:07:53

+0

@Roedel:改變了我的答案,看看是否有幫助,然後是最後一個。 – Peter 2010-06-16 17:14:34

+0

嗨帕特里克。這很有趣,我必須檢查傳遞給該屬性的值。如果轉換器適合你,它必須在我身邊。也許有一個無效的標誌或什麼的。我一檢查就告訴你。 – apparat 2010-06-16 17:31:24

相關問題