Правильный способ ссылки на Javascript в ASP.NET MVC? - PullRequest
17 голосов
/ 02 июня 2009

Как правильно ссылаться на Javascript в ASP.NET MVC? Использование чего-то вроде ../../Scripts/Myscript.js, кажется, хорошо работает для маршрутов, которые являются традиционными {controller} / {action} / {id}, но являются более хрупкими для чего-либо более или менее сложного, чем это. Больше беспокойства вызывает то, что рациональная абсолютная ссылка (/Scripts/Myscript.js) нарушает Intellisense в Visual Studio.

Как вы справляетесь с этим?

РЕДАКТИРОВАТЬ: Это, очевидно, очень старый вопрос на данный момент, но я редактирую, чтобы упомянуть, что в MVC4 все, что вам нужно, это:

src="~/Scripts/Whatever.js"

Этого достаточно, чтобы Razor понял, где вы имеете в виду, используя корневой путь.

Ответы [ 5 ]

19 голосов
/ 02 июня 2009

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

18 голосов
/ 22 февраля 2012

В случае, если кто-то еще найдет этот ответ, который использует MVC Razor, вот синтаксис для этого:

<script type="text/javascript" src="@Url.Content("/Scripts/MyScript.js")"></script>
4 голосов
/ 02 июня 2009

Я также ссылаюсь на js так же, как CMerat:

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

Если вам нужен Intellisense для jquery, вы можете найти инструкции по его настройке здесь . Насколько я знаю, вы не можете получить Intellisense для любого пользовательского js-файла, на который вы ссылаетесь - сначала вам нужно будет создать для него файл Intellisense.

1 голос
/ 02 июня 2009

Я сам сейчас использую mvccontrib htmlhelpers для этого.

Это также может быть полезно.

0 голосов
/ 02 июня 2009

Я создал свои собственные расширения 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, Charles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...