2016-09-20 6 views
1

Я пытаюсь сделать что-то вроде «системы шаблонов», это может позволить пользователю изменить шаблон сайта. Например, в панели администратора.Css в другой папке

Мой текущий файлы структура

-Controllers 
-Models 
-Views 
--Templates 
---DefaultTemplate 
----css 
-----style.css 
----Index.cshtml 

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

private ViewResult TemplateView(string viewName) 
{ 
    return View($"~/Views/Templates/{GlobalSettings.CurrentTemplate}/{viewName}.cshtml"); 
} 

и некоторые шаблон View (Index.cshtml)

..... 
<link rel="stylesheet" href="~/Views/Templates/DefaultTemplate/css/style.css" type="text/css" /> 
..... 

Но я не знаю, как правильно писать путь к моим css \ js \ images в правой templat e forder.

Я попытался

./css/style.css 

@Url.Content("/css/style.css") 

Но в результате HTML это как mysite.com/css/style.css так я получил 404 (не найдено)

Я также попытался это

~/Views/Templates/DefaultTemplate/css/style.css 

В этом случае я тоже получил 404.

Итак, может кто-нибудь мне помочь? Как написать правильный URL-адрес для CSS, изображений, hs и т. Д.?

ответ

1

Файл web.config в папке/Views ограничить доступ к файлам в папке по умолчанию:

Добавить код в файл web.config:

<httpHandlers> 
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 

Примечание: Это не хорошо практика хранения файлов css внутри папки просмотра.

+0

Могу ли я разрешать доступ только по указанному пути? Не для всех просмотров? –

+0

см. [This] (http://stackoverflow.com/questions/604883/where-to-put-view-specific-javascript-files-in-an-asp-net-mvc-application), но почему вы храните его внутри просмотреть папку? –

+0

Удобство для пользователя. «Просто поместите папку с представлениями, css, js, изображениями в папку шаблонов и выбрали ее в настройках» - не нужно ставить стили в «css/template», полосы в «js/template» и т. Д. –

Смежные вопросы