从星期四起,我就一直为这个小问题而头痛不已,但现在我还没有找到比那时更接近答案的答案。
我有一个用户控件,其属性如下:

/// <summary>
/// Gets or sets the media types.
/// </summary>
/// <value>The media types.</value>
public List<MediaType> MediaTypesFilter { get; set; }

mediatype是一个枚举,包含none、pdf、image等。
我希望能够在设计时设置用户控件的媒体类型(使用intellisense),例如:
<CMS:MediaPicker ID="MediaPicker runat="server" MediaTypesFilter="PDF, Image">

或者更可能导致这样的结果:
<CMS:MediaPicker ID="MediaPicker" runat="server">
    <MediaTypesFilter>
        <MediaType>PDF</MediaType>
        <MediaType>Image</MediaType>
    </MediaTypesFilter>
</CMS:MediaPicker>

我想我需要在属性上使用属性,比如designerserializationvisibility,等等,但是我想不出来。我读过关于collectioneditor的文章,我读到的内容表明默认collectioneditor应该能够处理这个问题,所以我不需要创建自定义collectioneditor。到目前为止,我得到的最接近的是一个内部属性,它无法设置哪些媒体类型。我似乎找不到在设计时用作属性的枚举列表的任何示例。有人能给我指一个正确的方向吗?或者给我一些示例代码来做我想做的事情吗?
现在,我已经得到了一个逗号分隔的字符串,当我需要它时,我会以编程方式将它拆分成一个列表,但这意味着在设计时没有intellisense,这很糟糕。

最佳答案

尝试添加Browseable属性。见example

[Browseable(true)]

不要忘记添加using System.ComponentModel;
另请参见Extending ASP.NET Web Controls With Custom HTML Attributes

07-24 15:36