3

こんにちは、埋め込まれた js ファイルを動作させるのに問題があります。

私は次のすべてを試しました:

  • Cassini 開発サーバーの実行 (VS2008、.NET 3.5)
  • クラスの名前空間宣言の上に[assembly: WebResource("MyNamespace.MyScriptFile.js", "text/javascript")] を追加しました。
  • スクリプト ファイルにはビルド アクション「埋め込みリソース」があります。
  • OnInit、OnLoad、およびOnPreRender中に登録しようとしました
  • スクリプト ファイルは、それを登録するコントロールと同じアセンブリおよび名前空間にあります。
  • Reflector でアセンブリを開き、リソースの名前が正しいことを確認しました。
  • 次のいずれかの方法を使用しても機能しません。

    ScriptManager.RegisterClientScriptResource(Page, GetType(), "MyNamespace.MyScriptFile.js");
    
    Page.ClientScript.RegisterClientScriptResource(GetType(), "MyNamespace.MyScriptFile.js");
    
    Page.ClientScript.RegisterClientScriptInclude(GetType(), "key",
        Page.ClientScript.GetWebResourceUrl(GetType(), "MyNamespace.MyScriptFile.js"));
    
    • 他の WebResource.axd ファイルが見つかりました - このファイルだけが見つかりません。

リソースのリクエストは、例外がリストされた 404 ページを返します。"*[HttpException]: This is an invalid webresource request.*"

ScriptManager.RegisterClientScriptResource を使用すると、例外が発生します。

"*Web resource 'MyNamespace.MyScriptFile.js' was not found.*"
4

4 に答える 4

3

コード例では、GetType() を呼び出しています...型は検索の開始点として使用されます。GetType() の呼び出しを行っている場所によっては、期待どおりに返されない場合があります。ASP.NET はページとカスタム コントロールの型を動的にコンパイルするため、GetType() は、ASP.NET によって構築された新しいアセンブリで定義された型を返す場合があります。

代わりに typeof(SomeType) を実行してみてください。 SomeType は、リソースの場所 (例: 操作しているコントロールの種類) に基づいて適切です。

于 2009-11-04T02:35:57.197 に答える
2

おそらくあなたのリソースファイルはプロジェクトのフォルダ内にありますか? その場合は、アセンブリで別の名前/場所の文字列を指定し、スクリプトを登録する必要があります

Page.ClientScript.RegisterClientScriptResource(GetType(), "MyNamespace.Folder1.Folder2.MyScriptFile.js");

[assembly: WebResource("MyNamespace.Folder1.Folder2.MyScriptFile.js", "text/javascript")]

通常、それは一般的な問題です

于 2009-11-03T11:50:14.153 に答える
1

独自の ScriptManger を実装し、そこから埋め込みファイルを追加してみてください。これが例です

public class MyScriptManager : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
            base.OnInit(e);
            RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "MyNamespace.MyScriptFile.js");
    }
}
于 2009-11-02T15:47:08.170 に答える
0

この問題のもう 1 つの原因は、Global.asax を扱いすぎており、ルールの後の他のすべてがホームページを提供すると言ったことです。私はそれほど賢くありません。1 時間か 2 時間が無駄になりました。

于 2013-12-17T12:51:40.080 に答える