Frage

Hallo Ich habe Probleme, eine eingebettete js Datei bekommen zu arbeiten.

Ich habe alle folgenden versucht:

  • Laufen Cassini Entwicklungs-Server (VS2008, .NET 3.5)
  • hinzugefügt . [Assembly: WebResource ( "MyNamespace.MyScriptFile.js", "text / javascript")] über die Namespace-Deklaration der Klasse
  • Script-Datei hat Aktion "Embedded Resource" bauen.
  • Versuchte Registrierung während OnInit, OnLoad und OnPreRender
  • Script-Datei ist in der gleichen Assembly und Namespace als Steuer es zu registrieren.
  • Eröffnet Montage mit Reflektor und überprüft den Namen der Ressource korrekt ist.
  • Funktioniert nicht eine der folgenden Methoden verwenden:

    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"));
    
    • Andere WebResource.axd Dateien gefunden werden -. Nur diese nicht gefunden werden

Die Anforderung für die Ressource gibt eine 404-Seite mit Ausnahme aufgeführt: "*[HttpException]: This is an invalid webresource request.*"

die ScriptManager.RegisterClientScriptResource Verwendung erzeugt die Ausnahme:

"*Web resource 'MyNamespace.MyScriptFile.js' was not found.*"
War es hilfreich?

Lösung

Versuchen Sie, Ihre eigene ScriptManger Implementierung und dann von dort aus die eingebettete Datei hinzufügen. Hier ist ein Beispiel

public class MyScriptManager : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
            base.OnInit(e);
            RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "MyNamespace.MyScriptFile.js");
    }
}

Andere Tipps

In Ihrem Beispiel-Code, Sie einen Anruf an GetType () machen ... wird die Art als Ausgangspunkt für die Suche verwendet. Je nachdem, wo Sie Ihren Anruf GetType machen (), können Sie nicht bekommen zurück, was Sie erwarten. Da ASP.NET dynamisch Typen für Ihre Seiten und benutzerdefinierte Steuerelemente erstellt, GetType () sein kann, in einer neuen Montage gebaut von ASP.NET definiert einen Typ zurück.

Sie könnten versuchen, typeof (Sometype) stattdessen tun, wo Sometype geeignet ist, auf den Standort Ihrer Ressource (ex. Die Steuerungsart der Sie arbeiten).

vielleicht Ihre Ressource-Datei befindet sich in Ordner (s) im Projekt liegt Wenn ja, sollten Sie einen anderen Namen / Ort Zeichenfolge in Assembly angeben und wenn Sie das Skript registrieren

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

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

in der Regel das ist ein weit verbreitetes Problem

Eine andere Ursache für dieses Problem - Sie haben schon zu plump mit Global.asax, und Sie haben gesagt, dass alles andere nach Ihren Regeln gibt Ihnen die Homepage. Nicht so klug von mir, ein oder zwei Stunden auf, dass verschwendet!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top