次の方法で共有


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 アプリケーションをスクリプトによる攻略から保護する」、および「検証コントロールの概要」を参照してください。

トピック 場所
チュートリアル : カスタム サーバー コントロールの開発と使用 ASP.NET コントロールの作成
ASP.NET 1.1 用カスタム データ バインド Web サーバー コントロールの開発 ASP.NET コントロールの作成
ASP.NET 2.0 用カスタム データ バインド Web サーバー コントロールの開発 ASP.NET コントロールの作成
チュートリアル : ASP.NET 2.0 用カスタム データ バインド ASP.NET Web コントロールの作成 ASP.NET コントロールの作成
チュートリアル : ASP.NET 1.1 用カスタム データ バインド ASP.NET Web コントロールの作成 ASP.NET コントロールの作成
チュートリアル : カスタム サーバー コントロールの開発と使用 Visual Web Developer でのアプリケーションの作成
ASP.NET 1.1 用カスタム データ バインド Web サーバー コントロールの開発 Visual Studio ASP .NET での Web アプリケーションの作成
チュートリアル : ASP.NET 1.1 用カスタム データ バインド ASP.NET Web コントロールの作成 Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET Web ページの ID による子コントロールの検索 Visual Studio ASP .NET での Web アプリケーションの作成
ASP.NET 2.0 用カスタム データ バインド Web サーバー コントロールの開発 Visual Studio ASP .NET での Web アプリケーションの作成
方法 : コントロール コレクションをウォークしてページの Web フォーム コントロールを検索する Visual Studio ASP .NET での Web アプリケーションの作成
チュートリアル : ASP.NET 2.0 用カスタム データ バインド ASP.NET Web コントロールの作成 Visual Studio ASP .NET での Web アプリケーションの作成
ASP.NET 1.1 用カスタム データ バインド Web サーバー コントロールの開発 Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET Web ページの ID による子コントロールの検索 Visual Studio ASP .NET での Web アプリケーションの作成
ASP.NET 2.0 用カスタム データ バインド Web サーバー コントロールの開発 Visual Studio ASP .NET での Web アプリケーションの作成
方法 : コントロール コレクションをウォークしてページの Web フォーム コントロールを検索する Visual Studio ASP .NET での Web アプリケーションの作成
チュートリアル : ASP.NET 2.0 用カスタム データ バインド ASP.NET Web コントロールの作成 Visual Studio ASP .NET での Web アプリケーションの作成
チュートリアル : ASP.NET 1.1 用カスタム データ バインド ASP.NET Web コントロールの作成 Visual Studio ASP .NET での Web アプリケーションの作成
方法 : ASP.NET Web ページで ID により子コントロールを検索する ASP .NET Web アプリケーションの作成
方法 : コントロール コレクションをウォークしてページの Web フォーム コントロールを検索する ASP .NET 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

その他の技術情報

ASP.NET カスタム サーバー コントロールの開発