2010-06-16 169 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

相关问题