4

クライアント コードがページにレンダリングされない (ユーザー コントロールによって挿入される) 理由を理解しようとした後、このリンクを見つけました。動作するにはフォーム タグが必要であることがわかりました ( Page.RegisterClientScriptBlockこれを宣言しましたが、use はこれに関して何も述べていません)。 Visual Studio 2005 を使用し ています。これが解決されたかどうかは誰にもわかりませんか?

編集:
明確にするために、コントロールを使用せずに、ページのヘッド セクションに JavaScript コードを追加する必要があります。

<form runat="server"

私はそれを使用して追加しようとしました:

HtmlGenericControl x = new HtmlGenericControl("script");
x.InnerText = "alert('123');";
Page.Header.Controls.Add(x);

しかし、これは私にはうまくいきませんでした。

4

4 に答える 4

2

とった!
私の間違いは、OnPreRenderメソッドでそれを行わなかったことです(私はRenderメソッドを使用しました)。

必要なのは、Mitchel Sellersが書いたように、ヘッダーをrunatサーバーに設定し、そのコントロールに追加することだけです。

 HtmlGenericControl x = new HtmlGenericControl("script");
 x.InnerText = GetScriptSection();
 Page.Header.Controls.Add(x);

私を正しい方向に向けてくれてありがとう!

于 2009-01-26T15:46:25.250 に答える
2

私が知る限り、これは現在のバージョンでも同じように機能しますが、非常に簡単にテストできます。

アップデート

コメントの議論によると、私が考えることができる唯一の「回避策」は、 Head 要素で runat="server" 宣言を使用して、ページの「head」セクションにスクリプトを手動で挿入することです.

于 2009-01-26T15:08:50.723 に答える
0

ここのregisterclientscriptblockのMSDNページには次のように書かれています:

クライアント側スクリプトは、Page オブジェクトの <form runat= server> 要素の開始タグの直後に発行されます。スクリプト ブロックは、出力をレンダリングするオブジェクトが定義されているときに発行されるため、 <script> 要素の両方のタグを含める必要があります。

フォームを含めたくない場合は、基本的に独自の実装を構築する必要があります。

于 2009-01-26T15:25:50.283 に答える