【问题标题】:ASP.NET UserControl Uri propertyASP.NET 用户控件 Uri 属性
【发布时间】:2010-06-16 13:09:09
【问题描述】:

我想将 System.Uri 类型的属性从 aspx 页面内部传递给 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 属性。

【问题讨论】:

    标签: asp.net user-controls properties


    【解决方案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
    

    --彼得

    【讨论】:

    • 问题是控件是密封类,我不能修改。我只想使用这个控件并设置 System.Uri 类型的给定属性。所以编写自己的控件不是一种选择。
    • @Roedel:改变了我的答案,看看这是否比上一个更有帮助。
    • 嗨帕特里克。这很有趣,我必须检查传递给属性的值。如果转换为你工作,它必须在我身边。也许它有一个无效的标志或什么的。我一检查就告诉你。
    • 发现这是一个错误的 url,因此无法进行演员表。谢谢你让我走上正轨。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多