Как включить js-файлы в asp.net MVC и иметь правильный путь на всех маршрутах - PullRequest
6 голосов
/ 04 июня 2009

Я создал проект ASP.net MVC по умолчанию. На главной странице у меня есть следующее наверху

<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

Затем мне нужно добавить файл javascript и добавить строку следующим образом, перетащив файл из обозревателя решений на страницу:

<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
</head>

Когда я захожу на сайт и смотрю HTML в браузере, я вижу это:

<head><title> 

    Index

</title><link href="Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>  
</head> 

Относительный путь к файлу CSS был исправлен, а для файла JS - нет. Сайт будет развернут в папке, отличной от той, которая находится в моей папке для разработки.

Есть ли правильный способ сделать это?

Ответы [ 2 ]

16 голосов
/ 04 июня 2009

Используйте Url Helper:

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

Надеюсь, что поможет

7 голосов
/ 04 июня 2009

Вы можете создать вспомогательный метод, который делает что-то вроде этого:

<%= Helper.IncludeJavascriptFile("Menu.js") %>

и затем в этом помощнике вы делаете что-то вроде:

public string IncludeJavascriptFile(string fileName){
    return Url.Content("<root>/Javascript/Files/" + fileName);
}

Тогда вы можете вызывать этот вспомогательный метод из вашего представления. Если вы решите изменить расположение файлов, вам придется беспокоиться об этом только в одном месте. Если вы измените имя файла, это само по себе другая проблема.

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