0

ブートストラップの問題が発生しています。解決策があることを願っています。

すべての JavaScript 参照をマスターページの下部に配置しました。これは通常は問題なく動作しますが、JavaScript をフッター (モジュールの初期化) にも追加する必要がある ASCX コントロールができました。マスター ページからモジュールを初期化できない理由は、分離コード ファイルからいくつかのプロパティが必要だからです。

ASP.NET MVC では、セクションを使用してユーザー コントロールからマスターページのセクションにデータを挿入していましたが、これは ASP.NET Webforms 4 でも可能ですか?

4

2 に答える 2

1

マスター ページの下部に次のようなものを追加できます。

<asp:PlaceHolder runat="server" ID="javascriptSection" />

次に、ページの分離コードまたは<% %>タグで:

var scriptTag = new HtmlGenericControl("script");

scriptTag.Attributes["type"] = "text/javascript";

scriptTag.InnerHtml = @"function () { ... }";

var javascriptSection = this.Page.Master.FindControl("javascriptSection");

if (javascriptSection != null)
    javascriptSection.Controls.Add(scriptTag);
于 2013-10-04T15:15:39.110 に答える
0

いいえ、セクションの概念は WebForms では利用できません。

説明したことを行う 1 つの方法は、<%= %>構文を使用して、サーバー プロパティの値をクライアント (HTML 出力) に送信することです。ASCX コントロールでは、次のマークアップを使用できます。

<script type="text/javascript">
var clientProperty = <%= MyServerProperty %>; 
</script>

ASP.NET WebForms は、ページをレンダリングするときに上記の MyServerProperty の値を置き換えます。その後、マスターページのスクリプトからグローバル変数として clientProperty にアクセスできます。

もう 1 つの方法は、非表示フィールドを使用して、サーバーでその値を設定することです。としてレンダリングされ<input type="hidden">、その値は ID によって任意のスクリプトから取得できます。

3 番目のオプションは、実際のクライアント スクリプトをマスターページに配置するのではなく (意味がある場合)、ASCX コントロールからのみ読み込むことです (サイトのすべての場所に読み込まれる場合)。

于 2012-10-10T08:55:30.790 に答える