Control クラス
すべての ASP.NET サーバー コントロールが共有するプロパティ、メソッド、およびイベントを定義します。
名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文
'宣言
<BindableAttribute(True)> _
<ThemeableAttribute(False)> _
Public Class Control
Implements IComponent, IDisposable, IParserAccessor, IUrlResolutionService, _
IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor
'使用
Dim instance As Control
[BindableAttribute(true)]
[ThemeableAttribute(false)]
public class Control : IComponent, IDisposable, IParserAccessor,
IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor
[BindableAttribute(true)]
[ThemeableAttribute(false)]
public ref class Control : IComponent, IDisposable, IParserAccessor,
IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor
/** @attribute BindableAttribute(true) */
/** @attribute ThemeableAttribute(false) */
public class Control implements IComponent, IDisposable,
IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor,
IExpressionsAccessor
BindableAttribute(true)
ThemeableAttribute(false)
public class Control implements IComponent, IDisposable,
IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor,
IExpressionsAccessor
適用できません。
解説
これは、カスタム ASP.NET サーバー コントロールを開発するときに派生元となる主要なクラスです。Control にはユーザー インターフェイス (UI) に固有の機能はありません。UI を持たないコントロール、または独自の UI を表示するコントロールを組み合わせたコントロールを作成している場合は、Control から派生します。UI を持つコントロールを作成する場合は、System.Web.UI.WebControls 名前空間の WebControl またはその他のコントロールから派生します。これらのコントロールは、カスタム コントロール作成の適切な開始点として使用できます。
Control クラスは、カスタム コントロール、ユーザー コントロール、およびページなど、すべての ASP.NET サーバー コントロールの基本クラスです。ASP.NET ページは、Control クラスから継承する Page クラスのインスタンスであり、拡張子 .aspx を持つファイルに対する要求を処理します。
Control クラスは、Web アプリケーションのユーザー インターフェイスの一部として直接的または間接的に使用できます。このため、このクラスを使用する際は、安全なコードの作成およびアプリケーションのセキュリティ保護のためのベスト プラクティスに従っていることを注意深く確認する必要があります。これらのトピックの概要については、「Web アプリケーションのセキュリティ上の脅威の概要」、「セキュリティ ポリシーの実施」、および「セキュリティの基本概念」を参照してください。詳細については、「標準コントロールのセキュリティ保護」「方法 : 安全なエラー メッセージを表示する」、「方法 : HTML エンコーディングを文字列に適用して Web アプリケーションをスクリプトによる攻略から保護する」、および「検証コントロールの概要」を参照してください。
使用例
Control クラスから派生したカスタム サーバー コントロールの例を次に示します。InnerContent
クラスは Control.Render メソッドをオーバーライドし、ページ上にクラスの子コントロールがあるかどうかを確認し、コントロールの最初の子がリテラル コントロールかどうかを調べます。これらの条件がいずれも満たされた場合、オーバーライドされたメソッドは HTML 文字列 (<H2>メッセージ : , リテラル コントロールの内容, および終了タグの </H2>) を Web フォーム ページに書き込みます。
セキュリティに関するメモ : |
---|
この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。詳細については、「スクリプトによる攻略の概要」を参照してください。 |
Option Explicit
Option Strict
Imports System
Imports System.Web
Imports System.Web.UI
Imports Microsoft.VisualBasic
Namespace SimpleControlSamples
Public Class InnerContent
Inherits Control
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="Execution")> _
Protected Overrides Sub Render(output As HtmlTextWriter)
If HasControls() And TypeOf Controls(0) Is LiteralControl Then
output.Write("<H2>Your message : ")
Controls(0).RenderControl(output)
output.Write("</H2>")
End If
End Sub 'Render
End Class 'InnerContent
End Namespace 'SimpleControlSamples
using System;
using System.Web;
using System.Web.UI;
namespace SimpleControlSamples {
public class InnerContent : Control {
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="Execution")]
protected override void Render(HtmlTextWriter output) {
if ( (HasControls()) && (Controls[0] is LiteralControl) ) {
output.Write("<H2>Your message : ");
Controls[0].RenderControl(output);
output.Write("</H2>");
}
}
}
}
package SimpleControlSamples;
import System.*;
import System.Web.*;
import System.Web.UI.*;
public class InnerContent extends Control
{
/** @attribute System.Security.Permissions.PermissionSet(
System.Security.Permissions.SecurityAction.Demand, Name = "Execution")
*/
protected void Render(HtmlTextWriter output)
{
if (HasControls() &&
get_Controls().get_Item(0) instanceof LiteralControl) {
output.Write("<H2>Your message: ");
get_Controls().get_Item(0).RenderControl(output);
output.Write("</H2>");
}
} //Render
} //InnerContent
import System;
import System.Web;
import System.Web.UI;
import System.Security.Permissions;
package SimpleControlSamples {
public class InnerContent extends Control {
protected override function Render(output : HtmlTextWriter) {
var securityperm : SecurityPermission;
securityperm = new SecurityPermission(SecurityPermissionFlag.SerializationFormatter);
securityperm.Demand();
if ( (HasControls()) && (typeof(Controls[0]) == LiteralControl) ) {
output.Write("<H2>Your Message: " + (LiteralControl(Controls[0])).Text + "</H2>");
}
}
}
}
.NET Framework のセキュリティ
- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)。要求値 : LinkDemand。アクセス許可値 : Minimal。
- AspNetHostingPermission (ホスト環境での動作に必要なアクセス許可)。要求値 : InheritanceDemand。アクセス許可値 : Minimal。
継承階層
System.Object
System.Web.UI.Control
派生クラス
スレッド セーフ
この型の public static (Visual Basicでは共有) メンバはすべて,スレッド セーフです。インスタンス メンバの場合は,スレッド セーフであるとは限りません。
プラットフォーム
Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition
Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。
バージョン情報
.NET Framework
サポート対象 : 3.0,2.0,1.1,1.0
参照
関連項目
Control メンバ
System.Web.UI 名前空間
Page
TemplateControl
LiteralControl
WebControl