2011-10-28 11 views
4

私は、CompositeDataBoundControlを継承するASPページのカスタムWebコントロールを作成しています。 が必要なのコントロールの定義にpublicプロパティがあります。ユーザーがASPページのコントロール定義にこのプロパティを指定しないと、そのプロパティが破損し、例外が発生します。私は、ユーザーがコントロールの 'runat'プロパティを提供するのを忘れたときに、コンパイラが警告に似た警告を出すようにしたい。カスタムASP .NETコントロールの必須プロパティ

"検証(ASP.Net):要素 'asp:Button'に必須の属性 'runat'がありません。"

public class MyControl : CompositeDataBoundControl, IPostBackEventHandler 
{ 
    private string _someString; 
    public string SomeString 
    { 
     get { return _someString; } 
     set { _someString = value; } 
    } 

    // Other Control Properties, Functions, Events, etc. 
} 

私は必要な特性であると私は私のページを構築する際に、コンパイラの警告をスローするように、「SomeString」をしたい:ここ

は私のコードがどのように見えるか、基本的です。

私はそうのような性質上必要な属性を入れて試してみました:

[Required] 
public string SomeString 
{ 
    get { return _someString; } 
    set { _someString = value; } 
} 

しかしこのdoesntのは動作するようです。

どうすればこのようなコンパイラメッセージを生成できますか?

+1

可能重複[Iは、カスタム.NET Webコントロールで必要な属性を指定するにはどうすればよいです?](http://stackoverflow.com/questions/1106134/how-do-i-specify- a-required-custom-at-a-custom-net-web-control) –

+1

あなたはrunnatが特別なケースであると思うと思います。これは、aspnetランタイムへの信号であり、マークアップはコントロールとしてレンダリングされ、コントロールはページクラス(またはコンテナ)にフィールドとして追加する必要があるというIDEへの信号です。 このプロパティに注意してください: 'btnmybutton.runnat'はあなたのコードの中に存在しません。 –

+0

私は何を求めているのですか? – user1018669

答えて

0

これは非常に簡単で、ページの読み込み時にプロパティに値があるかどうかを確認できます。あなたのプロパティの種類に応じて、NullかEmptyの場合にチェックすることができます。 私は、Page_Loadイベントで、この

private string _someString; 
    public string SomeString 
    { 
     get { return _someString; } 
     set { _someString = value; } 
    } 

を持っているかのよう

if(_someString != null && _someString != "") 
{ 
    String message = "Missing someString property"; 
    isAllPropertySet = false; //This is boolean variable that will decide whether any property is not left un-initialised 
} 

すべてのベスト場合、私がチェックします。

、最終的に

関連する問題