2010-09-06 5 views
2

Я развиваюсь в asp.net mvc2. Я начинаю создавать множество представлений и частичных представлений, для большинства из которых мне пришлось создать модель представления. Это похоже на скоро, что станет неуправляемым, чтобы вспомнить, какая точка зрения относится к какой модели. Я старался использовать наследование в моих моделях просмотра как можно больше.Как организовать представления, частичные виды и их модели просмотра?

Мне интересно, как другие управляют этим в своих проектах?

ответ

1

Я размещаю свои PV внутри папки PV в папке Views.

so Views/Home/PartialViews;

Затем я регистрирую этот путь в файле global.asax;

public static void RegisterViewEngine() 
    { 
     ViewEngines.Engines.Clear(); 

     WebFormViewEngine viewEngine = new WebFormViewEngine(); 

     viewEngine.PartialViewLocationFormats = (new[] { 
      "~/Views/Shared/PartialViews/{0}.ascx", 
      "~/Views/{1}/PartialViews/{0}.ascx" 
      }).Concat(viewEngine.PartialViewLocationFormats).ToArray(); 

     ViewEngines.Engines.Add(viewEngine); 
    } 

Я также в эти дни склоняюсь к тому, чтобы положить FormViewModels в папку представлений.

/Views/Home/IndexFormViewModel.cs 

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

+0

В чем преимущество ручной регистрации частичных просмотров? – Roman

+0

Вы не. Вы регистрируете местоположение в PartialViews. В приведенном выше коде {1} ссылается на View like/Home или/ContactMe и т. Д. Затем вы можете поместить свои PV в папку PartialViews и не иметь кода в пути в своих представлениях. Это хорошая новость, потому что вы можете перетащить PV из папки/home/PartialViews в папку Shared/PartialViews и не менять код. – griegs

+0

Я должен добавить, что вы не код в «~/Views/Home/PartialViews/MyPV.ascx». Вы буквально кодируете «~/Views/{1}/PartialViews/{0} .ascx" как есть. – griegs

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