私のカスタムサーバー側ajaxコントロールはIScriptControlを実装しています:
- GetScriptReferences
- GetScriptDescriptors
最初のメソッドはjavascriptファイルを送信し、2番目のメソッドは送信された以前の.jsファイルに基づいてjavascriptオブジェクトを作成します。
'AssembleyInfo'ファイルで、以下の行を追加し、プロパティエクスプローラーで.jsファイルを'埋め込みリソース'としてマークしました。
// this allows access to this files
[assembly: WebResource("ProjectName.file1.js", "text/javascript")]
[assembly: WebResource("ProjectName.file2.js", "text/javascript")]
IScriptControlの実装は次のとおりです。
public IEnumerable<ScriptReference>
GetScriptReferences()
{
yield return new ScriptReference("ProjectName.file1.js", this.GetType().Assembly.FullName);
yield return new ScriptReference("ProjectName.file2.js", this.GetType().Assembly.FullName);
}
public IEnumerable<ScriptDescriptor>
GetScriptDescriptors()
{
ScriptControlDescriptor descriptor = new ScriptControlDescriptor("ProjectName.file1", this.ClientID);
//adding properties and events (I use "AnotherName" on the safe side to avoid potentional namespace problems
ScriptControlDescriptor descriptor2 = new ScriptControlDescriptor ("AnotherName.file2", this.ClientID);
//adding properties and events
yield return descriptor;
yield return descriptor2;
}
これが私の.jsファイルの一部です:
最初のファイル
Type.registerNamespace("ProjectName"); ProjectName.file1 = function (element) { ....... ....... } ProjectName.file1.registerClass('ProjectName.file1', Sys.UI.Control); if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
2番目のファイル
Type.registerNamespace("AnotherName"); AnotherName.file2 = function (element) { ............ ............ } AnotherName.file2.registerClass('AnotherName.file2', Sys.UI.Control); if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
最初のオブジェクトのみを作成するのはなぜですか?
yield return descriptor
私のASPXには、2番目に作成する必要のあるJavaScriptがあります。
上記のステートメントにコメントすると、2番目のステートメントは正常に作成されます。