2

jquery プラグインに完全に依存するカスタム コントロールがあります。すべてが想定どおりに正常に機能していますが、コントロールが Visible = false に設定されているか、その親のいずれかが Visible でない場合に問題が発生します。理想的には、asp.net コントロールが Visible false に設定されている場合、エンジンはそれをレンダリングしないため、ページの読み込み時にコントロールがレンダリングされません。また、コントロールがレンダリングされない場合、JavaScript リソースがロードされないため、コントロールがポストバックに表示されたときに jquery プラグインがバインドされません。これは非常に基本的な問題であり、それを使用することになっている開発者は、コントロールが完全に機能していると仮定して、コントロールをページにドラッグ アンド ドロップするだけです。私はそれを回避する必要があると思います。以下に貼り付けたのは、リソースをロードする方法です。

ClientScriptManager cs = this.Page.ClientScript;

#region Loading JavaScript File(s)
string MenuPlugin = "MainMenuControl.Scripts.javascript_main.js";
cs.RegisterClientScriptResource(typeof(MainMenuControl.MenuControl), MenuPlugin);
string MenuInitializer = "MainMenuControl.Scripts.BuildMenu.js";
cs.RegisterClientScriptResource(typeof(MainMenuControl.MenuControl), MenuInitializer);
#endregion

#region Loading CSS File(s)
string cssUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "MainMenuControl.Styles.MenuStyle.css");
HtmlLink cssLink = new HtmlLink();
cssLink.Href = cssUrl;
cssLink.Attributes.Add("rel", "stylesheet");
cssLink.Attributes.Add("type", "text/css");
this.Page.Header.Controls.Add(cssLink);
#endregion

#region Loading Image(s)
Page.ClientScript.GetWebResourceUrl(typeof(MainMenuControl.MenuControl), "MainMenuControl.Images.down.gif");
string script = string.Format(@"initializeMenu('{0}');", Page.ClientScript.GetWebResourceUrl(typeof(MainMenuControl.MenuControl), "MainMenuControl.Images.down.gif"));
Page.ClientScript.RegisterStartupScript(Page.GetType(), "InitImage", script, true);
#endregion

コードの最後の 3 行目では、正しく読み込まれた画像 URL を使用して関数を呼び出しています。しかし、何らかの理由で、javascript ファイルがロードされず、ロードされたリソース リストにブラウザが表示されません。

問題の解決策はありますか、それとも私が間違っていることはありますか? 私は今、この問題について本当に無力であり、助けていただければ幸いです。

4

1 に答える 1