1

Я устанавливаю свой сайт MVC 5 по категориям, затем контроллер, модель, просмотр подпапок в каждой категории, т. Е. Папки корневых папок \ Home и \ Products будут иметь эти три подпапки , а также папку root \ Shared \ Views. Я следовал потрясающей статье моего Мэтью Ренца, Clean Architecture in ASP.NET MVC 5. Совершено в части создания пользовательского RazorViewEngine, а именно:ASP.NET MVC 5 настраиваемый RazorViewEngine для множественной структуры портала

public CustomRazorViewEngine() 
    { 
     ViewLocationFormats = new string[] 
     { 
      "~/{1}/Views/{0}.cshtml", 
     }; 

     PartialViewLocationFormats = new string[] 
     { 
      "~/Shared/Views/{0}.cshtml" 
     }; 
    } 

Там не много изменений за пределами этого. Мне было интересно, смогу ли я использовать эту идею и настроить проект веб-сайта с корневой папкой \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ и \ \ \ Изменения пользовательского вида бритвы код двигателя могут выглядеть как некоторые:

public CustomRazorViewEngine() 
    { 
     ViewLocationFormats = new string[] 
     { 
      "~/Portals/{2}/{1}/Views/{0}.cshtml", 
     }; 

     PartialViewLocationFormats = new string[] 
     { 
      "~/Portals/{2}/Shared/Views/{0}.cshtml" 
     }; 
    } 

Я не уверен, где значения {0} и {1} пришли, однако. Я мог найти средство для получения {2}, названия сайта портала. Относительные пути для остальной части сайта, такие как \ Content, \ Scripts и т. Д. Я считаю, что смогу структурировать себя.

Целью этого подхода является предоставление клиенту решения, в котором общий код может использоваться повторно для поддержки нескольких порталов с уникальными скинами и функциями. Спасибо за ваше время и внимание и дайте мне знать, если у вас есть вопросы.

Джон

ответ

1

Это заполнители в строке, которые могут быть использованы, чтобы положить имя области, имя контроллера и действия в строку с помощью контроллера. {2} - это область, {1} - контроллер, {0} - действие.

Вам также может быть интересно узнать, что при использовании Asp.Net Core легко получить стандартный Razor View Engine для поиска видов и т. Д. В пользовательских местах с помощью ViewLocationExpander, а не для создания нового механизма просмотра, который наследуется от Razor View Engine. Я только упоминаю об этом, потому что вы добавили тэг asp.net-core-mvc в свой вопрос.

Вот стек Переполнение ответ, который показывает, как: How to specify the view location in asp.net core mvc when using custom locations?

+0

Спасибо Рона! Я думал, что у Core будет нечто помимо Областей. Мне нужно будет прочитать о Райах, как это было давно. В этом соглашении над конфигурацией, возможно, Области означают больше, чем какое-либо произвольное слово, то есть Порталы. Я хотел бы оставить это открытым, чтобы убедиться, что другие сделали это без учета областей, а не с View («somepathtotheview.cshtml», моделью) и т. Д. –

+1

Na, они в значительной степени просто выдвинули концепцию Района. Но ядро ​​Asp.Net супер настраивается, поэтому вы действительно можете структурировать свой проект так, как хотите, если вы решите реализовать новые соглашения для своего проекта. –

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