コントロール

SupportsEventValidationAttribute

 ページのEventValidation属性を有効に設定している場合、Asp.netはコントロールのイベントのPostbackが偽装かどうかの検証を行いますし、Callback パラメータも検証します。EventValidationをサポートするカスタムコントロールを作る場合は、この属性をつけておかないとページのEventValidationを有効にしていたとしてもValidationが行われないらしい。
逆に一部のコントロールだけEventValidationの対象外にしたい場合は、派生クラスを作ってこの属性をつけなければいいみたい。

Postbackが偽装される可能性がある場合、下記の例外が発生します。

 Invalid postback or callback argument.

 もし予期であるパラメータなどの場合、上記する例外を回避するために、ClientScriptManager.RegisterForEventValidation を利用して、Postbackや、Callbackパラメータを登録して、解決できます。

DefaultPropertyAttribute

Visual Studio でカスタマイズコントロールのプロパティ一覧を見る時、フォーカスはデフォルトにとのプロパティにアクティブしているかを定義する。

例:
[DefaultProperty("Text")]
「Text」プロパティがアクティブしている

DefaultEventAttribute

DefaultPropertyAttributeに見ている、Visual Studio でカスタマイズコントロールのイベント一覧を見る時、フォーカスはデフォルトにとのイベントにアクティブしているかを定義する。

例:
[DefaultEvent("Click")]
「Click」プロパティがアクティブしている

ControlValuePropertyAttribute

MSDNの説明からみると、これはプロパティの値を設定する属性見えるけど、実際の操作に確認できない。
http://msdn.microsoft.com/ja-jp/library/system.web.ui.controlvaluepropertyattribute(VS.80).aspx

ParseChildrenAttribute と PersistChildrenAttribute

 ParseChildrenAttribute 属性は入れ子コントロールを格納できないコントロールに、子コントロールを入れて格納したい場合、或いはそもそも容器ではないコントロールに子コントロールを入れるために、利用する属性です。逆属性を付けなくて、Asp.netマークアップコードで入れ子があるコントロールを定義すると、パーサーエラーが発生します。

例: asp.net マークアップ側のコード

   <cc2:CustomTextBox ID="CustomTextBox1" runat="server">
       <cc2:CustomLabel ID="CustomLabel1" runat="server"></cc2:CustomLabel>
   </cc2:CustomTextBox>

カスタマイズコントロールの定義

[ParseChildren(true)]
public class CustomTextBox : System.Web.UI.WebControls.TextBox
{
    CustomLabel display_ = new CustomLabel();

    //これをプロパティを定義する必要があります。
    public CustomLabel CustomLabel
    {
        get { return display_; }
        set { display_ = value; }
     }
}


ParseChildrenAttribute と PersistChildrenAttributeがよく組み合わせて利用されている。

PersistChildrenAttribute は、コントロールの入れ子になった内容の解釈方法を示す ParseChildrenAttribute と組み合わせて使用されます。

△PersistChildrenAttribute が true で、ParseChildrenAttribute が false の場合、ASP.NET サーバー コントロール内の入れ子になった内容はコントロールとして保持されます。
 コントロールはコンテナとすることができない場合、以上のように設定してもエラーとなります。

△PersistChildrenAttribute が false で、ParseChildrenAttribute が true の場合、入れ子になった内容はサーバー コントロールのプロパティとして保持されます。
 コントロールはコンテナとすることがでもなくても、エラーが発生しません。

参考情報:
http://msdn.microsoft.com/ja-jp/library/system.web.ui.persistchildrenattribute.aspx
http://www.cnblogs.com/tedzhao/archive/2008/05/10/1190772.html
http://www.cnblogs.com/aspnet2008/archive/2008/07/28/1254723.html

ParseChildrenAttribute

カスタマイズするコントロールを子コントロールとして利用する場合、付ける属性です。

ControlBuilderと一緒に利用する場合が多い。ページパーサーがどういう風にコントロールを分析するか、ContorlBuilderによって記述する。

ControlBuilder

ページパーサー

ToolboxDataAttribute

コントロールを配置する際に、生成するHTMLタグのソースコードを定義する。

例:

[ToolboxData("<{0}:CheckBox runat=\"server\" HtmlEncode=\"True\"></{0}:CheckBox>")]

ValidationPropertyAttribute

 ASP.NET サーバー コントロールが検証プロパティの識別のために使用するメタデータ属性を定義します。このクラスは継承できません。


 Asp.net標準で提供する検証コントロールには、すべてControlToValidateプロパティを付けています。「CustomValidator」以外のすべての検証コントロールのControlToValidateプロパティは必ず、「ValidationPropertyAttribute」属性と表記されているコントロールのIDを指定すること。つまりは、コントロールは検証させたい場合、必ずValidationPropertyAttribute属性を付けること。



iディレクトリで複数のポータルサイトにディレクトリ登録

(画像の文字列を入力して下さい)

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:32:47 (1628d)

G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMITȂ1~] COiq COsیI