MVC - Доступ к файлам css, image, js в папке просмотра
В моем приложении mvc 3, предполагая, что у меня есть структура папок, например \Views\Account\js\custom.js
Как добавить этот файл в мое представление в Account\index.cshtml
, пожалуйста?
Я пробовал:
<script src="js/custom.js" type="text/javascript"></script>
<script src="/views/account/js/custom.js" type="text/javascript"></script>
<script src="~views/account/js/custom.js" type="text/javascript"></script>
но ничего не работает, Firebug всегда говорит, что файл 404 не найден в местах, которые не похожи на те, которые я указываю. (иногда он добавляет дополнительный вид в путь: -s)
Я знаю, что могу поместить его за пределы представления в свою собственную папку и получить доступ к нему как /myFolder/myfile.js
, и он будет работать, но этот файл javascript очень тесно связан с тем, что происходит в представлении учетной записи, и ничего больше, поэтому смысл поставить его там.
спасибо.
Ответы
Ответ 1
Файл web.config
в папке /Views ограничивает доступ к файлам в папке по умолчанию:
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
Вы можете изменить это, но, вероятно, более безопасно вообще не хранить активы в папке представлений.
Ответ 2
Вы можете использовать UrlHelper
:
<script src="@Url.Content("~/view/account/js/custom.js")" type="text/javascript"></script>
Ответ 3
Лучший способ - использовать T4MVC - http://mvccontrib.codeplex.com/wikipage?title=T4MVC
Не нужно использовать магические строки...
Ответ 4
Добавьте это под своими представлениями раздел обработчиков web.config
<add name="JavaScriptHandler" path="*.js" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" />