方法 : Web フォーム ページに MultiView Web サーバー コントロールを追加する (Visual Studio)

更新 : 2007 年 11 月

MultiView Web サーバー コントロールおよび View Web サーバー コントロールは、他のコントロールやマークアップのコンテナとして機能します。また、これらのコントロールには、コントロールとマークアップの代替セットを表示する手段が用意されています。MultiView コントロールおよび View コントロールは、主にモバイル デバイスのブラウザでの使用を目的としていますが、ASP.NET ページでもサポートされています。

Web フォーム ページに MultiView Web サーバー コントロールを追加するには

  1. ツールボックスの [標準] タブから、MultiView コントロールをページにドラッグします。

  2. ツールボックスの [標準] タブから、View コントロールを MultiView コントロールにドラッグします。

  3. View コントロールに追加する静的テキストを入力します。View コントロールにコントロールを追加するには、追加するコントロールをツールボックスから View コントロールにドラッグして、必要なレイアウトを作成します。

  4. 作成する View コントロールごとに、手順 2. と手順 3. を繰り返します。

  5. MultiView コントロールの ActiveViewIndex プロパティに、表示する View コントロールのインデックス値を設定します。 View コントロールを表示しない場合は、このプロパティに -1 を設定します。

  6. ActiveViewIndex プロパティをプログラムで設定するコードを追加して、どの View コントロールを表示するかを設定します。

    次の例では、MultiView コントロールの操作方法を示します。ページには、2 つの View コントロールが含まれています。ユーザーが RadioButton コントロールをクリックすると、そのボタンの CheckedChanged イベント ハンドラで、コードが ActiveViewIndex プロパティを設定することによって、適切な View コントロールを表示します。ユーザーが [検索] ボタンをクリックすると、コードは適切な View コントロール内の TextBox コントロールの値を取得します。

    ms247215.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

    この例には、ユーザー入力を受け付けるテキストボックスがあるため、セキュリティ上の脅威になる可能性があります。既定では、ASP.NET Web ページは、ユーザー入力にスクリプトまたは HTML 要素が含まれていないことを検証します。詳細については、「スクリプトによる攻略の概要」を参照してください。

    <%@ Page Language="VB" %>
    <script runat="server">
        Protected Enum SearchType As Integer
            NotSet = -1
            Products = 0
            Category = 1
        End Enum
    
        Protected Sub Button1_Click(ByVal sender As Object, _
                 ByVal e As System.EventArgs)
            If MultiView1.ActiveViewIndex > -1 Then
                Dim searchTerm As String = ""
                Select Case MultiView1.ActiveViewIndex
                    Case SearchType.Products
                        DoSearch(textProductName.Text, _
                            MultiView1.ActiveViewIndex)
                    Case SearchType.Category
                        DoSearch(textCategory.Text, _
                            MultiView1.ActiveViewIndex)
                    Case SearchType.NotSet
                End Select
            End If
        End Sub
    
        Protected Sub DoSearch(ByVal searchTerm As String, _
                ByVal type As SearchType)
            ' Code here to perform a search.
        End Sub
    
        Protected Sub radioButton_CheckedChanged(ByVal sender As _
                  Object, ByVal e As System.EventArgs)
            If radioProduct.Checked Then
                MultiView1.ActiveViewIndex = SearchType.Products
            ElseIf radioCategory.Checked Then
                MultiView1.ActiveViewIndex = SearchType.Category
            End If
        End Sub
    </script>
    
    <html>
    <head runat="server"></head>
    <body>
        <form id="form1" runat="server">
        <div>
            Search by product or by category?
            <br />
            <asp:RadioButton ID="radioProduct" 
                runat="server" 
                autopostback="true" 
                GroupName="SearchType" 
                Text="Product" 
                OnCheckedChanged="radioButton_CheckedChanged" />
            &nbsp;
            <asp:RadioButton ID="radioCategory" 
                runat="server" 
                autopostback="true" 
                GroupName="SearchType" 
                Text="Category" 
                OnCheckedChanged="radioButton_CheckedChanged" />
            <br />
            <br />
            <asp:MultiView ID="MultiView1" runat="server">
                <asp:View ID="viewProductSearch" runat="server">
                    Enter product name: 
                    <asp:TextBox ID="textProductName" 
                       runat="server"></asp:TextBox>
                </asp:View>
                <asp:View ID="viewCategorySearch" runat="server">
                    Enter category: 
                    <asp:TextBox ID="textCategory" 
                       runat="server"></asp:TextBox>
                </asp:View>
            </asp:MultiView>&nbsp;<br />
            <br />
            <asp:Button ID="btnSearch" OnClick="Button1_Click" 
                      runat="server" Text="Search" />
         </div>
        </form>
    </body>
    </html>
    
    <%@ Page Language="C#" %>
    
    <script runat="server">
        public enum SearchType
        {
            NotSet = -1,
            Products = 0,
            Category = 1
        }
    
        protected void Button1_Click(Object sender, System.EventArgs e)
        {
            if(MultiView1.ActiveViewIndex > -1)
            {
                String searchTerm = "";
                SearchType mSearchType = 
                     (SearchType) MultiView1.ActiveViewIndex;
                switch(mSearchType)
                {
                case SearchType.Products:
                    DoSearch(textProductName.Text, mSearchType);
                    break;
                case SearchType.Category:
                    DoSearch(textCategory.Text, mSearchType);
                    break;
                case SearchType.NotSet:
                    break;
                }
            }
        }
    
        protected void DoSearch(String searchTerm, SearchType type)
        {
            // Code here to perform a search.
        }
    
        protected void radioButton_CheckedChanged(Object sender, 
            System.EventArgs e)
        {
            if(radioProduct.Checked)
            {
                MultiView1.ActiveViewIndex = (int) SearchType.Products;
            }
            else if(radioCategory.Checked)
            {
                MultiView1.ActiveViewIndex = (int) SearchType.Category;
            }
        }
    </script>
    
    <html>
    <head id="Head1" runat="server"></head>
    <body>
        <form id="form1" runat="server">
        <div>
            Search by product or by category?
            <br />
            <asp:RadioButton ID="radioProduct" 
                runat="server" 
                autopostback="true" 
                GroupName="SearchType" 
                Text="Product" 
                OnCheckedChanged="radioButton_CheckedChanged" />
            &nbsp;
            <asp:RadioButton ID="radioCategory" 
                runat="server" 
                autopostback="true" 
                GroupName="SearchType" 
                Text="Category" 
                OnCheckedChanged="radioButton_CheckedChanged" />
            <br />
            <br />
            <asp:MultiView ID="MultiView1" runat="server">
                <asp:View ID="viewProductSearch" runat="server">
                    Enter product name: 
                    <asp:TextBox ID="textProductName" runat="server">
                    </asp:TextBox>
                </asp:View>
                <asp:View ID="viewCategorySearch" runat="server">
                    Enter category: 
                    <asp:TextBox ID="textCategory" runat="server">
                    </asp:TextBox>
                </asp:View>
            </asp:MultiView>&nbsp;<br />
            <br />
            <asp:Button ID="btnSearch" 
               OnClick="Button1_Click" 
               runat="server" Text="Search" />
         </div>
        </form>
    </body>
    </html>
    

参照

概念

MultiView および View Web サーバー コントロールの概要

その他の技術情報

チュートリアル : モバイル デバイス用 Web ページの作成