div
HTMLに要素があります。id
要素にaとrunat
属性を追加しました:
<div id="footer" runat="server">
レンダリング後、HTMLを表示すると次のように表示されます。
<div id="ctl00_footer">
ただし、ページの.aspx.csコードからはアクセスできません。
footer.InnerHtml += "test";
C#コードからその要素にアクセスするにはどうすればよいですか?
div
HTMLに要素があります。id
要素にaとrunat
属性を追加しました:
<div id="footer" runat="server">
レンダリング後、HTMLを表示すると次のように表示されます。
<div id="ctl00_footer">
ただし、ページの.aspx.csコードからはアクセスできません。
footer.InnerHtml += "test";
C#コードからその要素にアクセスするにはどうすればよいですか?
FindControl("footer") を使用して、HtmlGenericControl にキャストできます。
HtmlGenericControl footer = (HtmlGenericControl)FindControl("footer")
理由の 1 つは、そのページのデザイナー ファイルがないことです。したがって、それによって要素にアクセスすることはできませんID
。
[your page name].aspx.designer.cs という名前のクラスを追加して開き、すべてのコードを削除して保存し、ビューに移動して [保存] をクリックするだけです。デザイナーは、ビューからすべての要素のコードを生成する必要があります。この後、 で要素にアクセスできますID
。
You need to set the ClientIDMode property of the page or control to Static:
http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx
This will prevent the "ctl00_" from being appended to the ID which is what is causing you the problem.
<div id="footer" runat="server"></div>
あなたのやり方で問題なくアクセスできるはずです。奇妙なことに、生成されたマークアップは div id を変更せずにそのままにしていfooter
ます。
コンパイル エラーがないこと、およびこの div にアクセスしようとしているのと同じスコープでサーバー側で実行されている他の要素にアクセスできることを確認してください。
以前にこの問題に遭遇しました。runat="server"
属性を持たない別の div 内にターゲット div がある場合があります。runat
内部要素にアクセスできるようにするには、ネストされたすべての div に属性が必要です。
<div id="divContainer" runat="Server">
<div id="yourDiv" runat="Server">
</div>
私は同じ問題を抱えていて、「コピー」と「貼り付け」のために、関数に「静的」宣言があることがわかりました。静的関数は非静的識別子にアクセスできないため削除され、修正されました。
ページ作成時にコピペされた可能性はありますか?その場合は、古いページへのすべての参照が新しいページの名前に変更されていることを確認してください。以前に、ASPX ページの上部にあるコードと、デザイナー ページの名前空間でこれを行いました。
ASP.NET をコーディングし、サーバー側からコントロールにアクセスする場合は、提供されているコントロールを使用することもできます。
Div の代わりにPanelを使用します。いずれにせよ、ASP:Panel コントロールは、生成された html で div としてレンダリングされます。Panel には .Text プロパティがありませんが、コード ビハインドからコントロールを追加できます ( LabelやLiteralControlなど) 。