既存のアプリケーションをDotNetNukeモジュールに移植していて、奇妙な動作を発見しました。コードがHTML要素を識別できるように、JavaScriptを作成するときにClientIDを使用します。通常、これにより次のような値が作成されます。
"g_ctl00_ctl01_ctl00_ctl00_txtSearch"
私たちは皆これを百万回見ましたね?このコードをDotNetNukeモジュールに移植して初めて実行した後、ClientIDプロパティは次のように返します。
"dnn_ctr397_GalleryServerPro.Web.Gallery, TechInfoSystems_ctl00_ctl01_ctl00_ctl00_txtSearch"
カンマとスペースに注意してください。これにより、あらゆる種類のJavaScriptエラーが発生します。たとえば、ASP.NETログインコントロールは無効なJavaScriptを出力しています。
var dnn_ctr397_GalleryServerPro.Web.Gallery, TechInfoSystems_ctl00_ctl01_ctl01_lv_ctl02_Login1_UserNameRequired = document.all ? document.all["dnn_ctr397_GalleryServerPro.Web.Gallery, TechInfoSystems_ctl00_ctl01_ctl01_lv_ctl02_Login1_UserNameRequired"] : document.getElementById("dnn_ctr397_GalleryServerPro.Web.Gallery, TechInfoSystems_ctl00_ctl01_ctl01_lv_ctl02_Login1_UserNameRequired");
私のモジュールのアセンブリ名はTechInfoSystems.GalleryServerPro.dllで、デフォルトの名前空間はGalleryServerPro.Webで、ユーザーコントロールはGallery.csという名前のクラスにあるため、余分なテキストの一部がどこから来ているのかを部分的に説明していますが、その理由そこにいますか?また、ClientIDがコンマ、スペース、またはjavascriptで問題を引き起こす可能性のあるその他の文字を出力しないようにするにはどうすればよいですか?
ありがとう、ロジャー