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 に答える