ASP.NET UserControl Uri属性

时间:2010-06-16 13:09:10

标签: asp.net user-controls properties

我想从aspx页面内部将System.Uri类型的属性传递给WebControl。

是否可以像这样传递属性:

<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

修改

控件是一个密封的类,我不想修改它或编写自己的控件。目标是设置类型为System.Uri而不是System.String的url-property。

1 个答案:

答案 0 :(得分: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

- 彼得