ASP.NET MVC - куда вы помещаете свои файлы .js, если не хотите хранить их в / Scripts? - PullRequest
5 голосов
/ 19 мая 2010

У меня есть несколько файлов .js, которые я хотел бы хранить в тех же каталогах, что и их представления (они специфичны для представления - просто держать javascript отдельно от HTML представления)

Однако добавление их в каталог /Views/ControllerName/ не будет работать, потому что при запросе к веб-серверу для файла .js:

<script type="text/javascript" src="/Views/ControllerName/myscript.js"></script>

По существу, он будет направлен на контроллер 'Views', который явно не существует.

Обновление

Из того, что я прочитал, добавление следующего IgnoreRoute в методе global.asax.cs RegisterRoutes должен разрешить доступ к любому запрошенному файлу .js:

routes.IgnoreRoute("{resource}.js/{*pathInfo}");

Однако я не могу заставить его работать?

Ответы [ 3 ]

3 голосов
/ 31 мая 2010

решаемые

После того, как я нашел и протестировал несколько постов (наиболее убедительный пост здесь ), которые я не смог получить, следующая головоломка решает:

В Global.asax добавьте следующий код к методу RegisterRoutes:

routes.IgnoreRoute("{file}.js");

Здесь есть отличный пост, описывающий эту и дополнительную деятельность здесь

0 голосов
/ 19 мая 2010

Думаю, у вас есть два варианта.

  1. Пересоздайте структуру папок Views под сценариями и сохраните их в том же относительном месте в каталоге scripts.
  2. Не храните их в отдельных файлах, но используйте отдельные ContentPlaceHolders в MasterPage для секции скрипта (обычно внизу тела).

Вы также можете хранить их в любых не «специальных» папках, но я думаю, что скрипты - это то место, где вы храните их отдельно.

Обычно я храню общие сценарии (используемые более чем на одной странице) в папке сценариев, без соответствующей иерархии представлений, и сценарии, специфичные для страниц, в файле представления, но в отдельном ContentPlaceHolder. Для меня важно не хранить JS в отдельном файле, а отдельно от содержимого . Это достигается с помощью другого ContentPlaceHolder.

0 голосов
/ 19 мая 2010

Подумайте над последним вашим предложением - может, поэтому для них был выделен определенный каталог (/ Scripts /)? ;)

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