В каком месте (в какой папке и т. Д.) Помещать файлы javascript, относящиеся к представлению, в приложении ASP.NET MVC?
Чтобы мой проект был организован, мне бы очень хотелось иметь возможность размещать их рядом с файлами .aspx представления, но я не нашел хорошего способа ссылаться на них, когда это делается, не открывая ~ / Views / Действие / структура папок. Неужели допустить утечку информации о структуре папок - это действительно плохо?
Альтернативой является размещение их в папках ~ / Scripts или ~ / Content, но это небольшое раздражение, потому что теперь мне нужно беспокоиться о конфликтах файлов. Это раздражение, которое я могу преодолеть, если это «правильно».
asp.net-mvc
Эрв Вальтер
источник
источник
Ответы:
Старый вопрос, но я хотел дать свой ответ на случай, если кто-то еще придет его искать.
Мне тоже нужны были файлы js / css для просмотра в папке views, и вот как я это сделал:
В папке web.config в корне / Views вам нужно изменить два раздела, чтобы веб-сервер мог обслуживать файлы:
Затем из файла просмотра вы можете ссылаться на URL-адреса, как вы ожидаете:
Это позволит обслуживать файлы .js и .css и запретит обслуживание чего-либо еще.
источник
Один из способов добиться этого - поставить свои собственные
ActionInvoker
. Используя приведенный ниже код, вы можете добавить в конструктор вашего контроллера:Теперь, когда вы помещаете
.js
файл рядом с вашим представлением:Вы можете получить к нему доступ напрямую:
Ниже источник:
источник
Вы можете инвертировать предложение davesw и заблокировать только .cshtml
источник
Site.Master
.Я знаю, что это довольно старая тема, но я хотел бы добавить несколько вещей. Я попробовал ответить davesw, но при попытке загрузить файлы сценария он выдавал ошибку 500, поэтому мне пришлось добавить это в web.config:
в system.webServer. Вот что у меня есть, и я смог заставить его работать:
Дополнительная информация о проверке: https://www.iis.net/configreference/system.webserver/validation
источник
добавьте этот код в файл web.config внутри тега system.web
источник
Я также хотел разместить js-файлы, связанные с представлением, в той же папке, что и представление.
Мне не удалось заставить другие решения в этом потоке работать, не потому, что они сломаны, но я слишком новичок в MVC, чтобы заставить их работать.
Используя приведенную здесь информацию и несколько других стеков, я пришел к решению, которое:
Примечание. Я также использую маршрутизацию атрибутов HTTP. Возможно, что маршрут, используемый в моей душе, можно было бы изменить для работы без включения этого.
Учитывая следующий пример структуры каталогов / файлов:
Используя шаги настройки, приведенные ниже, в сочетании с приведенным выше примером структуры, URL-адрес тестового представления будет доступен через:,
/Example/Test
а ссылка на файл javascript будет:/Example/Scripts/test.js
Шаг 1 - Включите маршрутизацию атрибутов:
Отредактируйте файл /App_start/RouteConfig.vb и добавьте
routes.MapMvcAttributeRoutes()
чуть выше существующих маршрутов .MapRoute:Шаг 2. Настройте свой сайт для обработки и обработки /{controller}/Scripts/*.js как пути MVC, а не статического ресурса.
Отредактируйте файл /Web.config, добавив следующее в раздел system.webServer -> handlers файла:
И снова с контекстом:
Шаг 3 - Добавьте следующий результат действия сценария в файл контроллера
Вам нужно будет скопировать это в каждый из ваших файлов контроллера. Если вы хотите, вероятно, есть способ сделать это как-то в виде единой разовой конфигурации маршрута.
Для контекста это мой файл ExampleController.vb:
Заключительные примечания. В javascript-файлах test.vbhtml view / test.js нет ничего особенного, и они здесь не показаны.
Я сохраняю свой CSS в файле представления, но вы можете легко добавить к этому решению, чтобы вы могли ссылаться на свои файлы CSS аналогичным образом.
источник