Ответ 1
<script src="<%= Url.Content("~/Scripts/Myscript.js") %>" type="text/javascript"></script>
Каков правильный способ ссылки на Javascript в ASP.NET MVC? Использование чего-то типа.. /../Scripts/Myscript.js, похоже, отлично подходит для маршрутов, которые являются традиционными {controller}/{action}/{id}, но более хрупкими для чего-либо более или менее сложного. Большая озабоченность вызывает то, что рациональная абсолютная ссылка (/Scripts/Myscript.js) разбивает Intellisense в Visual Studio.
Как вы справляетесь с этим?
EDIT: Это, очевидно, очень старый вопрос на данный момент, но я редактирую, чтобы упомянуть, что в MVC4 все, что вам нужно, это следующее:
src="~/Scripts/Whatever.js"
Для Razor достаточно понять, что вы имеете в виду, используя корневой путь.
<script src="<%= Url.Content("~/Scripts/Myscript.js") %>" type="text/javascript"></script>
Если кто-то еще найдет этот ответ, который использует MVC Razor, вот синтаксис для этого:
<script type="text/javascript" src="@Url.Content("/Scripts/MyScript.js")"></script>
Я также ссылаюсь на js так же, как CMerat:
<script type="text/javascript" src="<% =Url.Content("~/Scripts/jquery-1.3.2.min.js") %>"></script>
Если вам нужна Intellisense для jquery, вы можете найти инструкции по настройке здесь. Насколько я знаю, вы не можете получить Intellisense для любого настраиваемого js файла, с которым вы ссылаетесь - вам нужно сначала создать файл Intellisense для него.
Я сам использую mvccontrib htmlhelpers для этого на данный момент.
Я создал свои собственные расширения HtmlHelper, которые выглядят так:
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);
}
Если intellisense - это то, что вам нужно, вы можете обмануть VS, думая, что загружен JS файл... Например.
<% if (false)
{ %>
<script src="../../Scripts/Myscript.js" type="text/javascript"></script>
<% } %>
HTHS, Чарльз