2013-04-16 2 views
6

У меня потенциально будет много частичных представлений для моего приложения, которые могут быть сгруппированы в структуру папок. Кажется, мне следовало бы это сделать, иначе я буду просматривать папку с множеством файлов. Поэтому я предполагаю, что у меня должно получиться что-то вроде:Каков наилучший способ организовать частичные представления в файловой структуре?

Views -> 
    Group1 -> 
    PartialView1 
    PartialView2 

Каким будет выглядеть HTML.Partial?

HTML.Partial("~/Views/Group1/MyPartialView.cshtml",Model) 

Еще одна идея у меня была в том, чтобы иметь один частичный вид в файл с условными кода блоков, но я подозреваю, что это идет против всего, что PartialViews о.

И, наконец, есть ли разница в производительности, если у вас много мелких частичных представлений против одного большого частичного просмотра с несколькими условными компонентами? Думаю, я думаю, что один файл загружается в память и компиляции для кода, а не для нескольких небольших загрузок файлов.

Спасибо.

EDIT: дополнительная информация.

У меня есть общий контроллер, который я использую для рендеринга разных частей отчета, поэтому все разделы для главы «Введение» будут отображаться с использованием партитур «Введение», т.е. «Введение.Секция 1», «Введение.Секция2», , В моем сценарии я не верю, что у меня есть общие разделы по главам, поэтому я могу пойти с «файлом». но папка Views будет большой, поэтому я рассматриваю использование подпапок.

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

+1

Изучали ли вы использование шаблонов редактора/дисплея в соответствии с фактическим типом модели? он позволяет связать представление с типом модели общесистемным способом без необходимости вручную указывать имена частичных представлений. (http://stackoverflow.com/a/5497234/1373170) –

ответ

3

Пока они находятся в каталоге Views, это не имеет большого значения. Если вы поместите его в другое место, кроме Views/{controller} или Views/Shared, вам понадобится полное местоположение, в том числе Views и расширение, поэтому @Html.Partial("~/Views/Group1/PartialView1.cshtml").

Лично, если у вас есть много партикулов, которые используются в одном контроллере, я оставил бы их в каталоге {controller-name} (с лидирующим подчеркиванием, как предлагалось @IyaTaisho).Но если они используются несколькими контроллерами, и вам нужно сгруппировать их, я бы сгруппировал их под Views/Shared/{groupName}.

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

+0

Спасибо за это. На самом деле у меня есть общий контроллер, который я использую для визуализации разных частей отчета, поэтому все разделы для главы «Введение» будут отображаться с использованием партитур «Введение», т.е. «Введение.Секция 1», «Введение.Секция2». В моем сценарии я не верю, что у меня есть общие разделы по главам, поэтому я могу пойти с «файлом». но папка Views будет большой, поэтому я рассматриваю использование подпапок. – SamJolly

5

Вы можете использовать родительский дочерний файл именования, как:

header.html 
header.login.html 
header.searchbar.html 

Вы можете даже взять его на шаг дальше:

contact.helpdesk.html 
contact.office.html 

с использованием Re-обертоны гораздо реже, чем уникальные обертонов, так что вы могли бы использовать соглашение для повторных использований, например:

global.partial1.html 
global.partial2.html 
  • Ограничения - это большой каталог файлов.

  • Benifits легко снимать, легко сортировать.

+0

Интересная идея. С точки зрения MVC3, вы думаете, что это предпочтительнее иметь папки с той же целью, то есть Header \ header.html, Header \ Login.html, Header \ SearchBar.html – SamJolly

+0

+1 Мне нравится этот подход, есть ли у него какие-то недостатки? –

+1

@SamJolly Вы можете потерять рассудок. Кроме того, родительский элемент в этом случае не является папкой, а сам файл. Частичное родительскому объекту. –

5

Обычно я добавляю _ перед частичным. Пример будет иметь основной вид, называемый Home.cshtml. Части (частичные) на странице будут иметь примерно следующее: _header.cshtml, _footer.cshtml и т. Д.

+0

Спасибо за это. Да, осознавая подход «_». Проблема заключается не в том, чтобы отличать Частицы, а как организовать большое количество разных Partials. – SamJolly

+0

А, я вижу. У меня похожая проблема. Я унаследовал огромное количество их в моем текущем проекте. На данный момент я дал понять, что это было так, потому что с ним было легче справиться (смешение партитур и представлений). Я бы почти предложил сделать папку для них, но в то же время я не уверен. Извините, я больше не могу помочь. – IyaTaisho

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