2009-06-02 7 views
16

Was ist die richtige Methode, um Javascript in ASP.NET MVC zu referenzieren? Die Verwendung von etwas wie ../../Scripts/Myscript.js scheint gut für Routen zu sein, die die traditionelle {Controller}/{Action}/{ID} sind, aber für etwas mehr oder weniger komplexes als das fragiler sind. Von größerer Bedeutung ist, dass der rationale absolute Verweis (/Scripts/Myscript.js) Intellisense in Visual Studio unterbricht.Korrekter Weg, Javascript in ASP.NET MVC zu referenzieren?

Wie gehen Sie damit um?

EDIT: Das an dieser Stelle offensichtlich eine sehr alte Frage, aber ich bin die Bearbeitung dass in MVC4 zu erwähnen, alles, was Sie benötigen, ist dieser:

src="~/Scripts/Whatever.js" 

Das ist für Razor genug ist, wo Sie, um herauszufinden, meinen, den Wurzelpfad verwenden.

Antwort

19

<script src="<%= Url.Content("~/Scripts/Myscript.js") %>" type="text/javascript"></script>

+3

Does Intellisense Arbeit in VS auf diese Weise? –

4

I Referenz js auch die gleiche Art und Weise wie CMerat:

<script type="text/javascript" src="<% =Url.Content("~/Scripts/jquery-1.3.2.min.js") %>"></script> 

Wenn Sie Intellisense für jQuery benötigen, können Sie instructions on how to set it up here finden. Soweit ich weiß, können Sie Intellisense für keine benutzerdefinierte js-Datei erhalten, die Sie referenzieren - Sie müssen zuerst die Intellisense-Datei dafür erstellen.

+0

Ich kenne die Anweisungen von Scott, aber was ich aus diesen Antworten erhalte, ist, dass es keine Möglichkeit gibt, das Skript korrekt zu referenzieren * und * Intellisense für Dateien zu verwenden, die es unterstützen (wie jQuery), außer den ScriptManager zu verwenden. –

+0

Das macht Sinn .. coz das Auto-Intellisense (wenn Sie es so nennen wollen) ist nur weg von Skript, das es auf der Seite sehen kann. Wenn Ihr Skript "verlinkt" ist, wird es spät gebunden und die IDE erkennt ihre Inhalte zur Entwurfszeit nicht. –

1

ich mich MvcContrib HtmlHelpers für diesen zur Zeit verwenden.

This kann auch nützlich sein.

0

Ich habe meine eigene Htmlhelper Erweiterungen geschaffen, die wie folgt aussehen:

public static string MEScriptBlock(this HtmlHelper html, string path, string releasePath) 
{ 
#if DEBUG 
#else 
    if (!string.IsNullOrEmpty(releasePath)) 
     path = releasePath; 
#endif 

    return string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>\r\n", 
         path); 
} 

Wenn Intellisense ist, was Sie, nachdem Sie VS zu denken, dass eine JS-Datei geladen wurde Trick könnte ... Z. B.

<% if (false) 
    { %> 
    <script src="../../Scripts/Myscript.js" type="text/javascript"></script> 
<% } %> 

HTHS, Charles

17

Falls jemand diese Antwort findet, die MVC Razor verwendet, hier ist die Syntax für das:

<script type="text/javascript" src="@Url.Content("/Scripts/MyScript.js")"></script> 
+7

In MVC4 ist alles, was Sie brauchen, src = "~/Scripts/Myscript.js" und Razor wird es herausfinden. –

Verwandte Themen