2

我想强制控件的使用者在将控件放在页面上时给属性一个值。

在 VisualStudio 中,当您在用户控件上创建没有属性 SRC 或 ALT 的 < img > 标记时,它会带有下划线,表示 SRC 和 ALT 是必需的属性。我认为这只是编辑器对标签的特殊处理,但是有没有办法为控件定义类似的行为?

如果控件具有这样定义的属性:

public object AProperty
{
    get 
    {
        if (ViewState["AProperty"] == null)
        {
            throw new Exception("AProperty is a required property of this control");
        }
        return ViewState["AProperty"];
    }
    set { ViewState["AProperty"] = value; }
}

有没有办法使用自定义属性或其他会在设计器中标记的东西?

4

2 回答 2

5

您可以使用 Microsoft.Build.Framework.Required 属性。这将需要在构建时设置一个值,否则构建将失败并显示一条消息,指示该属性没有值。

我不相信有一个属性可以指示特定标签必须包含在服务器控件中(或者至少我在 System.Web.UI.HtmlControl.Image 类上看不到任何此类属性)。我相信小下划线是 IDE 的 HTML 验证的一部分。

您始终可以创建一个自定义属性,如果缺少某个属性,该属性会引发警告

于 2009-04-24T21:14:21.527 回答
0

虽然 Microsoft.Build.Framework.Required 可能是这里最好的答案,但对于其他偶然发现此问题且无法使用 .NET 4.0 的人,您也可以使用此方法:

http://forums.asp.net/t/1238319.aspx

于 2013-09-30T23:46:35.397 回答