2009-06-02 18 views
16

ASP.NET MVCでJavascriptを参照する正しい方法は何ですか? ../../Scripts/Myscript.jsのようなものを使うと、伝統的な{controller}/{action}/{id}のルートではうまくいくように見えますが、それよりも多かれ少なかれ複雑なものの方が壊れやすくなります。より大きな懸念は、合理的な絶対参照(/Scripts/Myscript.js)がVisual StudioでIntellisenseを壊すことです。ASP.NET MVCでJavascriptを参照する正しい方法はありますか?

どのように処理しますか?

EDIT:これは、この時点では明らかに非常に古い質問ですが、私はMVC4でそれに言及することで編集しています、あなたが必要なのはこれです:

src="~/Scripts/Whatever.js" 

レイザーはどこにあなたを把握するために十分だことルートパスを使用しています。

答えて

19

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

+3

はVSでインテリセンスの作業を行い、この方法は? –

4

私もCMeratと同じようJS参照:

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

あなたはjqueryのためにインテリセンスが必要な場合は、instructions on how to set it up hereを見つけることができます。私が知る限り、参照する任意のカスタムjsファイルに対してIntellisenseを取得することはできません。まず、Intellisenseファイルを作成する必要があります。

+0

私はScottの指示に気付いていますが、私がこれらの応答から得ていることは、スクリプトを正しく参照する方法がないことと、ScriptManagerを使用する以外は、それをサポートするファイル(jQueryなど)に対してIntellisenseの作業を行うことができないことです。 –

+0

それは意味があります。自動インテリセンス(あなたがそれを呼びたい場合)は、ページ内で見ることができるスクリプトから離れているだけです。あなたのスクリプトは、リンクされているので、遅くバインドされているので、IDEは設計時にその内容を認識しません。 –

1

私は自分でこれを行うには、mvccontrib htmlhelpersを使用してください。

Thisでも便利です。インテリセンスはあなたがJSファイルがロードされていることを考えることにVSをだますことができた後、あなたは、例えば...ているものであれば

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); 
} 

0

私は次のようになり、私自身のHtmlHelperの拡張機能を作成しました

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

HTHS、 チャールズ

17

誰がMVCかみそりを使用しているこの答えを見つけた場合は、ここではそのための構文は次のとおりです:

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

MVC4で必要なのはsrc = "〜/ Scripts/Myscript.js"だけで、Razorはそれを理解します。 –

関連する問題