2009-06-02 14 views
16

ASP.NET MVC'de Javascript'e başvurmanın doğru yolu nedir? ../../Scripts/Myscript.js gibi bir şey kullanmak, geleneksel {controller}/{action}/{id} olan rotalar için iyi çalışıyor, ancak bundan daha fazla veya daha az karmaşık bir şey için daha hassastır. Daha fazla endişe duymak, rasyonel mutlak referansın (/Scripts/Myscript.js) Visual Studio'daki Intellisense'i bozmasıdır.ASP.NET MVC'de Javascript referansı doğru yolu?

Nasıl yapıyorsunuz?

DÜZENLEME: Razor yeter

src="~/Scripts/Whatever.js" 

sizi nereye anlamaya: Bu açıkça bu noktada çok eski bir sorudur ama MVC4 içinde belirtmeyi düzenleme ediyorum, tek ihtiyacınız bu Kök yolu kullanarak demek.

cevap

19

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

+3

mu IntelliSense çalışmaları bu şekilde? –

4

Ben de CMerat JS aynı şekilde başvuru: Eğer jquery için IntelliSense gerekiyorsa

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

, sen instructions on how to set it up here bulabilirsiniz. Bildiğim kadarıyla, referans verdiğiniz herhangi bir özel js dosyası için Intellisense alamıyorsunuz - önce Intellisense dosyasını yaratmanız gerekecek.

+0

Scott'un talimatlarının farkındayım, ancak bu yanıtlardan elde ettiğim şey, komut dosyasına doğru şekilde başvuru yapmanın bir yolu olmadığından * ve * ScriptManager'ı kullanmanın dışında (jQuery gibi) destekleyen dosyalar için Intellisense çalışmasına sahip olmak. –

+0

Bu mantıklıdır .. oto-intellisense coz (eğer bunu söylemek istiyorsanız) sadece sayfada görebileceğiniz komut dosyasının dışındadır. Senaryonuzun 'bağlantılı' olduğu gibi geç kalıyor ve bu yüzden IDE tasarım zamanında içeriğinin farkında değil. –

1

Şu anda bunun için mvccontrib htmlhelpers kullanıyorum.

This da yararlı olabilir. Intellisense bir JS dosyası yüklendikten olduğunu düşünerek içine VS yanıltabilirsiniz sonra Ör ... konum buysa

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

Ben benziyor kendi HtmlHelper uzantıları oluşturduktan

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

HTHs, Charles başkasının burada, MVC Razor kullandığı bu cevabı bulduğu sözdizimi var durumda

17

: VS

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

MVC4'te ihtiyacınız olan tek şey src = "~/Scripts/Myscript.js" ve Razor bunu çözecek. –