0

内部ページでバナーを管理するためのコントロール (.ascx) を作成しようとしています。

私は、すべての ID が正しいバナーに一致するスイッチ ケースでそれを行います。質問 - どうすれば Adwords JS スクリプトを 内に配置できswitch break;ますか?

次のようになります。

switch(_bannerId) 
{ 
     case "banner1": 
     {
           <script type= >
              Google adsense code
           </script>
     }
     case "banner2": 
     {
           <script type= >
              Google adsense code
           </script>
     }

     break;  
} 

出来ますか?どうやってするの?

編集

動作していませんResponse.Write()

「コード ビハインドから Javascript を呼び出す方法」を検索してみましたが、適切な投稿が見つかりませんでした。

4

2 に答える 2

0

C# コードと html を単純に混在させることはできません。html コードを文字列として扱い、それらをページ出力に追加する必要があります。

これを .ascx ファイルに追加します。

<Asp:Literal runat="server" ID="AdwordsScript"></Asp:Literal>

そして ascx.cs ファイルに:

switch(_bannerId) 
{ 
     case "banner1": 
     {
           AdwordsScript.Text= @"<script type=""text/javascript"">
              //Google adsense code 1
           </script>";
     }
     break;  
     case "banner2": 
     {
           AdwordsScript.Text= @"<script type=""text/javascript"">
              //Google adsense code 2
           </script>";
     }
     break;  
} 
于 2012-08-17T22:08:25.757 に答える
0

を呼び出すResponse.Write()と、出力マークアップが破損します。つまり、Render()が呼び出される前にコンテンツが書き込まれるため、スクリプトがドキュメントのマークアップの外に配置されます。Literalページに を追加し、 のTextプロパティをLiteralスクリプトに設定します。

さらに良いことに、使用するだけRegisterStartupScript()です。このようなシナリオを対象としており、スクリプトを実行するタイミングをより詳細に制御できます。ページでを使用している場合ScriptManagerは、同様の方法があります。

または、コード ビハインドで大きなスクリプト文字列を避けるために、すべてのスクリプトをPlaceholdersマークアップで宣言し、switch ステートメントに基づいてそれらを表示/非表示にすることができます。

C#

switch(_bannerId){
  case "banner1":
      this.plhScript1.Visible = true;
      break;
  case "banner2":
      this.plhScript2.Visible = true;
      break;
  default:
      throw new InvalidOperationException( "Unknown banner type" );
}

ユーザーコントロール

<asp:Placeholder runat="server" id="plhScript1" visible="false">
    <script>
    // script goes here


    </script>
</asp:Placeholder>

<asp:Placeholder runat="server" id="plhScript2" visible="false">
    <script>
    // script goes here


    </script>
</asp:Placeholder>
于 2012-08-17T22:12:50.387 に答える