我想从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。
答案 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
- 彼得