Är det någon som har använt Webresource.axd för att komma åt inbyggda resurser (embedded resources)? Jag har nu löst problemet.Använda Webresource.axd för att komma åt JavaScript-filer som embedded resources
Mitt scenario är följande:
En "Solution" med flera olika projekt.
Ett av projekten innehåller en samling JavaScript-filer. "Build Action" för dessa är satt till "Embedded Resource". I samma projekt finns en klass, ScriptDeliveryBoy, som ska användas för att infoga ett länkat script på en valfri sida. Med andra ord ska en <script src="" type="text/javascript"> inkluderas.
Koden idag ser ut som följer:
public static void InjectScriptInclude(Page TargetPage)
{
string scriptUrl = TargetPage.ClientScript.GetWebResourceUrl(TargetPage.GetType()), "CommonResources.Scripts.Scheduler.js");
TargetPage.ClientScript.RegisterClientScriptInclude("SchedulerScript", scriptUrl);
}
Skriptfilen "Scheduler.js" ligger i en mapp som heter "Scripts" i ett projekt som har Default Namespace satt till "CommonResources".
I AssemblyInfo.cs har jag lagt till följande:
[assembly: WebResource("CommonResources.Scripts.Scheduler.js", "text/javascript")]
Jag försöker nu få den skriptfilen, som är inkluderad vid kompileringen, infogad med en Webresource.axd-URL.
Jag gör det genom att anropa min InjectScriptInclude(this)-metod i OnPreRender() på en sida som nu ligger i samma projekt, alltså projektet med Namespace CommonResources.
Någon som har någon erfarenhet av Webresource.axd?
Jag får in en <script>-tag på sidan där URL:en är /Webresource.axd?massaolikatecken.
Grymt tacksam för eventuell hjälp!Sv: Använda Webresource.axd för att komma åt JavaScript-filer som embedded resou
Hemligheten ligger i den Type-parameter som används när man anropar GetWebResourceUrl(). Typen måste anges till ett objekt av en typ som är definierad i samma assembly som innehåller de inkluderade resurserna.
Jag använde typeof(ScriptDeliveryBoy) sin typparameter och då kunde .NET korrekt referera till embedded resources.