4

divHTMLに要素があります。id要素にaとrunat属性を追加しました:

<div id="footer" runat="server"> 

レンダリング後、HTMLを表示すると次のように表示されます。

<div id="ctl00_footer">

ただし、ページの.aspx.csコードからはアクセスできません。

footer.InnerHtml += "test";

C#コードからその要素にアクセスするにはどうすればよいですか?

4

9 に答える 9

4

FindControl("footer") を使用して、HtmlGenericControl にキャストできます。

HtmlGenericControl footer = (HtmlGenericControl)FindControl("footer")
于 2012-05-31T21:46:27.917 に答える
2

理由の 1 つは、そのページのデザイナー ファイルがないことです。したがって、それによって要素にアクセスすることはできませんID

[your page name].aspx.designer.cs という名前のクラスを追加して開き、すべてのコードを削除して保存し、ビューに移動して [保存] をクリックするだけです。デザイナーは、ビューからすべての要素のコードを生成する必要があります。この後、 で要素にアクセスできますID

于 2015-01-27T10:01:56.680 に答える
1

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.

于 2012-05-31T22:15:50.377 に答える
1

<div id="footer" runat="server"></div>あなたのやり方で問題なくアクセスできるはずです。奇妙なことに、生成されたマークアップは div id を変更せずにそのままにしていfooterます。
コンパイル エラーがないこと、およびこの div にアクセスしようとしているのと同じスコープでサーバー側で実行されている他の要素にアクセスできることを確認してください。

于 2012-05-31T21:58:38.923 に答える
1

以前にこの問題に遭遇しました。runat="server"属性を持たない別の div 内にターゲット div がある場合があります。runat内部要素にアクセスできるようにするには、ネストされたすべての div に属性が必要です。

<div id="divContainer" runat="Server">
    <div id="yourDiv" runat="Server">
</div>
于 2013-09-16T15:15:44.987 に答える
0

私は同じ問題を抱えていて、「コピー」と「貼り付け」のために、関数に「静的」宣言があることがわかりました。静的関数は非静的識別子にアクセスできないため削除され、修正されました。

于 2013-04-18T12:24:33.820 に答える
0

ページ作成時にコピペされた可能性はありますか?その場合は、古いページへのすべての参照が新しいページの名前に変更されていることを確認してください。以前に、ASPX ページの上部にあるコードと、デザイナー ページの名前空間でこれを行いました。

于 2012-08-13T02:32:30.790 に答える
0

ASP.NET をコーディングし、サーバー側からコントロールにアクセスする場合は、提供されているコントロールを使用することもできます。

Div の代わりにPanelを使用します。いずれにせよ、ASP:Panel コントロールは、生成された html で div としてレンダリングされます。Panel には .Text プロパティがありませんが、コード ビハインドからコントロールを追加できます ( LabelLiteralControlなど) 。

于 2012-05-31T21:42:50.153 に答える