Domanda

Ciao, ho problemi a far funzionare un file js incorporato.

Ho provato tutto quanto segue:

  • Esecuzione del server di sviluppo Cassini (VS2008, .NET 3.5)
  • Aggiunto [assembly: WebResource (" MyNamespace.MyScriptFile.js " ;, " text / javascript ")] sopra la dichiarazione dello spazio dei nomi della classe.
  • Il file di script ha un'azione di compilazione " Embedded Resource " ;.
  • Ho provato a registrarmi durante OnInit, OnLoad e OnPreRender
  • Il file di script si trova nello stesso assembly e nello stesso spazio dei nomi del controllo che lo registra.
  • L'assembly aperto con Reflector e verificato che il nome della risorsa sia corretto.
  • Non funziona utilizzando nessuno dei seguenti metodi:

    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"));
    
    • Altri file WebResource.axd sono stati trovati - solo questo non è stato trovato.

La richiesta per la risorsa restituisce una pagina 404 con un'eccezione elencata: " * [HttpException]: questa è una richiesta di risorsa Web non valida. * "

L'uso di ScriptManager.RegisterClientScriptResource produce l'eccezione:

"*Web resource 'MyNamespace.MyScriptFile.js' was not found.*"
È stato utile?

Soluzione

Prova a implementare il tuo ScriptManger e poi aggiungi il file incorporato da lì. Ecco un esempio

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

Altri suggerimenti

Nel tuo codice di esempio, stai effettuando una chiamata a GetType () ... il tipo viene utilizzato come punto di partenza per la ricerca. A seconda di dove stai effettuando la chiamata a GetType (), potrebbe non essere possibile recuperare ciò che ti aspetti. Poiché ASP.NET compila dinamicamente tipi per le tue pagine e controlli personalizzati, GetType () potrebbe restituire un tipo definito in un nuovo assembly creato da ASP.NET.

Potresti invece provare a fare typeof (SomeType), dove SomeType è appropriato in base alla posizione della tua risorsa (es. il tipo di controllo con cui stai lavorando).

forse il tuo file di risorse si trova all'interno delle cartelle nel progetto? in tal caso, è necessario specificare un'altra stringa nome / posizione nell'assembly e quando si registra lo script

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

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

di solito è un problema comune

Una causa alternativa di questo problema: sei stato troppo pesante con Global.asax e hai detto che tutto il resto dopo le tue regole ti dà la homepage. Non così intelligente da parte mia, un'ora o due sprecata in questo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top