2017-02-10 2 views
0

Где лучшее место в каталоге проектов для контроллеров для общих частичных представлений?asp.net MVC правильное место для контроллеров для общих частичных представлений

Я нашел подобный вопрос: ASP.NET MVC: Correct place for Partial Views?

Я не могу решить, если это лучше сделать что-то вроде/Controller/Shared/CONTROLLER_FOR_PARTIAL_VIEW или просто создать свою отдельную папку, как/Controller/CONTROLLER_FOR_PARTIAL_VIEW

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

EDIT: Чтобы быть ясным, я специально спрашиваю о каталоге для КОНТРОЛЛЕРА, а не ПРОСМОТРЕТЬ. Благодаря!

+0

Для чего это стоит, проекты, которые я был на нем, были в '/ Area/Controllers/SharedPartialController.cs' и с тем, что именование вида было в'/Area/Views/SharedPartial/_MenuDropdown.cshtml' – mmcrae

+1

Возможный дубликат из [ASP.NET MVC: правильное место для частичных просмотров?] (http://stackoverflow.com/questions/4092884/asp-net-mvc-correct-place-for-partial-views) – jjj

+0

@jjj Не дубликат этот вопрос. Я спрашиваю о каталоге для контроллеров, а не о представлениях. Но спасибо за ваш вклад. –

ответ

2

В некотором смысле это не имеет значения. Для этого нет истинного стандарта или конвенции, поэтому у вас есть свобода делать это, однако он имеет наибольшее значение для вас и вашего приложения.

Имея под что-то вроде Controllers/Shared может иметь смысл, если есть достаточно из них, что это имеет смысл и он добавляет ценность, чтобы держать их отдельно от обычных контроллеров. Однако, с точки зрения проекта, все по существу разделяют, поэтому здесь нет истинного различия. Лично, просто имея в виду что-то своеобразное, вероятно, лучший маршрут. Например, у меня есть несколько дочерних действий в одном из моих проектов, которые используются в разных частях моего макета. В результате я создал LayoutController, чтобы разместить их.

Следует иметь в виду, что при использовании стандартной маршрутизации любой контроллер будет доступен инфраструктуре маршрутизации, независимо от того, где он находится в вашем дереве проектов. Вы должны были бы просто знать, как добраться до него, но если вы назвали свой общий контроллер чем-то вроде SharedController, то со стандартной маршрутизацией его действия будут доступны через /shared/action. Для таких вещей, как детские действия, это легко решить, используя [ChildActionOnly]. Добавив этот атрибут к вашему действию child, он будет отделен от инфраструктуры маршрутизации для запросов URL. Внутри MVC все равно сможет добраться до него для целей рендеринга для представления.

+0

Это очень полезно, спасибо. Да, это, безусловно, будет сценарий ChildActionOnly –

1

Проектов Я был на нем были /Area/Controllers/SharedPartialController.cs и с этой точкой зрения присвоения имен были /Area/Views/SharedPartial/_MenuDropdown.cshtml

Надеется, вы используете «область» в вашем проекте MVC, в этом случае я хотел бы предложить делать один общий контроллер по площади.

I.e. /Order/Controllers/TabsPartialController.cs для области, которая относится к области Order, а затем /User/Controllers/NavTabsPartialController.cs и т. Д.

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