コントロール関連Tips †LiteralコントロールとLabelコントロールの違い †Literal コントロールは Label コントロールとほぼ同じですが、Literal コントロールでは、表示するテキストにスタイルを適用できないという点が異なります。 子コントロールのイベントを親へ渡す †RaiseBubbleEvent メソッドを利用する 子コントロールの追加 †TextBoxコントロールにValidate子コントロールを追加できますが、動作がしません。 カスタマイズしたコントロールにValidationControlを使いたい場合 †【ユーザーコントロール定義側】 [ValidationProperty("Text")] public partial class uc_TextBoxEX : System.Web.UI.UserControl 以上に設定すると、Visual Studio のデザインモードで、ValidationControlの「ControlToValidate」プロパティから、対象コントロールが現れます。ValidationProperty属性を設定していなくて、無理やりでValidationControl の「ControlToValidate」プロパティに対象コントロールのIDを記入する場合、コンパイル時はエラーが発生しませんが、実行時エラーが発生します。 PostBack後コントロールの値が変更されたかどうか † IPostBackDataHandler.LoadPostDataメソッドをテキストボックス、チェックボックスなどのコントロールに利用(override)して、PostBackした後、値は変更したかどうかの確認ができます。 HiddenField †Methodの方式は、Getまたは新しいウィンドウを開く際に、値を取得できない。 コントロールの属性 †SupportsEventValidationAttribute † ページのEventValidation属性を有効に設定している場合、Asp.netはコントロールのイベントのPostbackが偽装かどうかの検証を行いますし、Callback パラメータも検証します。EventValidationをサポートするカスタムコントロールを作る場合は、この属性をつけておかないとページのEventValidationを有効にしていたとしてもValidationが行われないらしい。
DefaultPropertyAttribute †Visual Studio でカスタマイズコントロールのプロパティ一覧を見る時、フォーカスはデフォルトにとのプロパティにアクティブしているかを定義する。 DefaultEventAttribute †DefaultPropertyAttributeに見ている、Visual Studio でカスタマイズコントロールのイベント一覧を見る時、フォーカスはデフォルトにとのイベントにアクティブしているかを定義する。 ControlValuePropertyAttribute †MSDNの説明からみると、これはプロパティの値を設定する属性見えるけど、実際の操作に確認できない。 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 †カスタマイズするコントロールを子コントロールとして利用する場合、付ける属性です。 ControlBuilderと一緒に利用する場合が多い。ページパーサーがどういう風にコントロールを分析するか、ContorlBuilderによって記述する。 ControlBuilder †ページパーサー ToolboxDataAttribute †コントロールを配置する際に、生成するHTMLタグのソースコードを定義する。 [ToolboxData("<{0}:CheckBox runat=\"server\" HtmlEncode=\"True\"></{0}:CheckBox>")] ValidationPropertyAttribute † ASP.NET サーバー コントロールが検証プロパティの識別のために使用するメタデータ属性を定義します。このクラスは継承できません。 Scriptコントロール †ScriptManagerとScriptManagerProxyの使い分け †ScriptManagerは、マスタページを持たないPage内、あるいはマスタページ内で使用する. ScriptManagerProxyは、マスタページを持つPage内で使用する. 参考情報: 参考情報: ClientScriptManager.RegisterStartupScriptの引数の意味 ClientScriptManager.RegisterForEventValidation †ページに<%@ Page EnableEventValidation="true" %>の設定は、Formタグに危険な文字コードが入っているか、またはコントロールのPostBack、CallBackイベントに利用するパラメータは、本当に最初に提供するコントロールからもらったものかを検証する。ページのEnableEventValidation属性をtrueに設定している場合、動作中に、JavaScriptなどの外部プログラムから、コントロールを変更したい時、ClientScriptManager.RegisterForEventValidation を利用して、ページに現在変更したものは大丈夫という旨を伝える。この一方に ClientScriptManager.RegisterForEventValidation を利用しても、コントロールに危険と認識する文字列の排除はできません。 http://www.cnblogs.com/dongyongjing/archive/2007/03/07/666427.html GetPostBackEventReference †为了使一般按钮也具有回发的功能,ASP.NET提供了Page.ClientScript.GetPostBackEventReferenceメソッド。 参考情報: RegisterStartupScript †動的にページ応答(Response)で、クライアント側のスクリプト ブロックを出力します。 検証コントロール †空白文字列の検証 †検証コントロールデフォルトは、空白の文字列を検証しない仕様なので、TextBoxにある空白の文字列も検証したい場合、検証コントロールの「ValidateEmptyText」プロパティを「True」と設定する必要があります。 検証コントロールのValidationGroup属性 †一つの検証コントロールは複数のValidationGroupに所属・共有することができない。 Tips †デザイナでラベルのTextプロパティに、複数行入力したいのであれば、Textに次の属性をつける。 [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(System.Drawing.Design.UITypeEditor))] |