如何初始化复杂类型(struct\class)的自定义控件属性(property)

How to initialize Custom control attribute (property) of complex type (struct\ class)

我在 asp.net 中有一个自定义控件 我的自定义控件有一个 class 类型的 Size 成员(具有 Width 和 Height 内部成员的值类型)。 我想从 .aspx 文件初始化这个成员。

理想的解决方案是(此行不会通过编译):

<CustomControl:MyCtrl runat="server" ID="MyCtrlID" MaxSize="{Width=200, Height=400}"/>

.cs 文件中的代码:

public partial class MyCtrl: System.Web.UI.UserControl
{
    public System.Drawing.Size MaxSize { get; set;}

    // Class logic...
}

我当然可以通过向 setter 添加逻辑(在 c# 代码中)来解决这个问题,如下所示:

private System.Drawing.Size m_MaxSize;
public string MaxSize 
{ 
    set 
    { 
        string[] sizes = value.Split(",");
        m_MaxSize.Width = sizes[0];
        m_MaxSize.Height = sizes[1];
    }
}

但是我们有任何 asp.net 语法可以为我们做这件事吗?非常感谢任何帮助。

由于 Size Structure uses SizeConverter Class 转换和访问 Size 属性,以下示例演示如何正确地删除 MaxSize 属性:

<CustomControl:MyCtrl runat="server" ID="MyCtrlID" MaxSize="200, 400"/>

关于类型转换器

类型转换器

provides a unified way of converting types of values to other types, as well as for accessing standard values and subproperties.

ASP.NET 在 运行 时使用类型转换器来序列化和反序列化存储在控制状态和视图状态中的对象,请关注 Type Converter Example 以获取更多详细信息。