7

Ho il seguenteCome faccio ad aggiungere type = "text/javascript" ad un tag script quando si utilizza System.Web.Optimization

bundles.Add(new ScriptBundle("~/bundles/scripts/common").Include(
        "~/Scripts/jquery.validationEngine.js", 
        "~/Scripts/common.js")); 

che genera

<script src="/bundles/scripts/common?v=9O0Yi3fV_GWpGyJQ_QYURiOYy6SEmxUQtkUVN4GXo2U1"></script> 

Quando reso con

<asp:PlaceHolder ID="PlaceHolderJs" runat="server">     
      <%: Scripts.Render("~/bundles/scripts/common") %> 
    </asp:PlaceHolder> 

Quale non è HTML valido come tipo mancante = "text/javascript". Come faccio a rendere BundleCollection questo elemento nel tag script?

+0

Vuoi dire type = "text/javascript"? Se è così, e stai usando HTML5, l'attributo type non è necessario. – Netricity

+0

Ciao, volevo dire javascript (post modificato). Non è HTML5 però. Grazie. – jondow

+0

Fare riferimento a "Risorsa interpretata come script ma trasferita con testo/testo di tipo MIME." Errore - http://stackoverflow.com/questions/3467404/chrome-says-resource-interpreted-as-script-but-transferred-with-mime -type-text – Lijo

risposta

10

Un modo è quello di cambiare il modo di rendere il vostro script:

Da:

@Scripts.Render("~/bundles/scripts/common") 

A:

<script src="@BundleTable.Bundles.ResolveBundleUrl("~/bundles/scripts/common")" type="text/javascript"></script> 

O a seconda di come si sta implementando bundling, potrebbe essere necessario:

<script src="@Microsoft.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/scripts/common")" type="text/javascript"></script> 

O per moduli web:

<script src="<%= Microsoft.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/scripts/common")%>" type="text/javascript"></script> 

Anche se c'è un modo per farlo utilizzando @ Script.Render mi piacerebbe vederlo.

UPDATE: in risposta ai vostri commenti, come specificato nella this SO answer, nella versione pre-release di System.Web.Optimization, c'è un'opzione chiamata RenderFormat che vi permetterà di fare questo pure ... ma credo che la roba sopra è più facile da leggere per questo caso particolare.

+1

Grazie, ho notato un post con questo metodo ma ho pensato che probabilmente non era il modo più efficace. Forse questo è il modo di andare per ora. – jondow

+0

@ jondow Cosa lo rende non efficace? – MikeSmithDev

+1

Ciò che è medio è che mi aspettavo che ci fosse un metodo integrato come un sovraccarico sul metodo Scripts.Render o una proprietà che poteva essere impostata sull'oggetto ScriptBundle. – jondow

0

Credo che la risposta contrassegnata non sia corretta per type="text/css", è corretta per JavaScript (forse il titolo della domanda è fuorviante?). Per i file CSS si dovrebbe usare

@Styles.Render("~/bundles/styles/common") 

e non@Scripts.Render(...). Il motivo è che la minificazione è stata eseguita e solo @Styles.Render(...) è a conoscenza della sintassi Cascading Stylesheet, @Scripts.Render(...) è specializzata per la minifrazione di JavaScript.

Problemi correlati