Куда мне поместить мои строго типизированные данные представления asp.net-mvc?

Я вкладываю свои классы viewdata в свои контроллеры, и по мере того, как их количество растет, я начинаю спрашивать себя, хорошая ли это идея. С другой стороны, что-то в отношении загрязнения каталогов / Views и / Controllers этими вещами кажется неуместным.

Есть ли здесь соглашение, которое мне не хватает? Может быть, каталог / ViewData? idk, какие хорошие места для моих классов viewdata?


person Dane O'Connor    schedule 04.03.2009    source источник


Ответы (4)


Я сделал именно то, что вы предлагаете, мои строго типизированные данные представления находятся в / ViewData. Я думал поместить его в каталог \ Model, но мне не нравится, что в моих проектах слишком много вложенных каталогов. \ ViewData - это также то, что делает Kigg.

person ajma    schedule 04.03.2009

Я не знаю соглашения. Я просто поместил свои под /Model/ViewModel/BlahViewModel.cs и т. Д. Я бы не стал помещать их в отдельный проект, пока в этом не возникнет особая необходимость. Позже их будет несложно переместить, если понадобится.

person John Sheehan    schedule 04.03.2009

Я поместил свои классы данных представления в проект, посвященный именно этому. Они являются DTO, и включение их в свой собственный проект гарантирует, что они не зависят от чего-либо, находящегося выше на архитектурных уровнях.

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

person mookid8000    schedule 04.03.2009

поскольку вы используете MVC, а структура папок должна представлять структуру пространства имен вашего кода, я бы рекомендовал для каждого из ваших объектных доменов сгруппировать контроллеры, модели и службы в отдельные папки.

мы бы использовали

  • Доменное имя

         Controllers
         Model
         Services
    
person Richard    schedule 04.03.2009
comment
правильно, но где бы вы поместили классы viewdata? Контроллеры и представления зависят от них. - person Dane O'Connor; 05.03.2009
comment
В папке модели, так как вы хотите передать модель в представление из контроллера. MvcContrib имеет несколько отличных расширений, позволяющих передавать модели данных в данные представления, такие как ViewData.Add (modelInstance) и ViewData.Get ‹ModelClass› () - person Richard; 07.03.2009