0

マスター ページのコンテンツ ページ Ajax コンボ ボックス コントロールにアクセスしたいのですが、それも Javascript を使用して行います。

私はコンテンツページのコンテンツページホルダーを使用して同じことを試みてきましたが、問題の1つは約10個のコンテンツページがあるため、ページ1のような他のページが開かれると、コードはオブジェクト参照例外をコンテンツプレースホルダーとして表示します一致しません。

どのコンテンツページが開いているかを取得する方法は? また、マスター ページで maincontentplaceholder id を取得するためのコードを動作させることができません。

私が今までやってきたこと:

function accessControlContentPage() {
var txtCont = document.getElementById("Page.Master.FindControl('ContentPlaceHolder1').FindControl('txtContent')").value;
var text=txtCont;
}

しかし、これは機能していません。同じことで何か助けはありますか?

4

2 に答える 2

1

推奨されるアプローチは、そのようなスクリプトをレンダリングする Web ページに配置するための特定のコンテンツ プレース ホルダー コントロールを追加することです。次のマスター/コンテンツ ページのマークアップを見てください。

マスター ページ:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApp.PageMethods.Site1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

head他のコンテンツ プレース ホルダーのドロップダウン リストにアクセスしようとするいくつかの js 関数を作成する必要があるコンテンツ プレース ホルダーがありContentPlaceHolder1ます。

コンテンツ ページのマークアップ:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="WebApp.PageMethods.WebForm3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script>
        function foo() {
            var ddl = document.getElementById('<%= DropDownList1.ClientID %>');
        }
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
</asp:Content>

ここでは、ネストされたコントロールにアクセスしようとすることについてそれほど心配する必要はありませんでしたContentPlaceHolderID

または、そのオプション/自由がない場合は、マスターページ自体に次のようにいつでも書くことができます:

var d = document.getElementById('<%= this.ContentPlaceHolder1.FindControl("DropDownList1").ClientID %>');
于 2014-04-01T08:19:07.870 に答える