2013-05-08 5 views
0

Я разрабатываю приложение ASP.NET MVC 4, которое будет использоваться для настройки сложного приложения. Я хочу иметь одну страницу конфигурации с несколькими вкладками. Каждая вкладка будет использоваться для настройки другой части в системе, и когда вы нажмете на нее, правая форма (каждая вкладка конфигурации будет отличаться от частичного представления) будет загружена с помощью AJAX. Я хочу, чтобы в нижней части страницы была кнопка «Сохранить изменения», которая сохранит изменения со всех вкладок.Написание модульных страниц с ASP.NET MVC 4

Поскольку сама система является модульной, я хочу также сделать сайт конфигурации модульным. Это означает, что я хочу, чтобы каждая вкладка была своего рода плагином, который предоставляет мне следующие методы (путем наследования с интерфейса): GetConfigurationPartialView (который вернет частичный вид с моделью просмотра для этой вкладки), SaveChanges (который сохранит конфигурацию в БД как черновик) и GetConfigurationXml, который будет экспортировать полную XML-конфигурацию и применить ее в системе.

Мои вопросы:

  1. Что вы думаете об этой конструкции? у вас есть лучшие идеи?
  2. Как вы рекомендуете реализовать эту кнопку «Сохранить изменения» в главном окне? Как я могу перебирать все мои плагины и вызывать метод SaveChanges каждого плагина, передать ему правильный объект модели (который является моделью частичного представления), заполненный всеми данными, не имея глубокого знания каждого объекта плагина в главном контроллере/представлении, поэтому я может ли эта система легко расширяться?
  3. Некоторые вкладки включают в себя сетки с данными. Я начал изучать сетку пользовательского интерфейса Kendo. Я хочу, чтобы пользователь делал все на сетке, на клиенте (удаляя и добавляя новые строки), а затем я хочу в методе SaveChanges, о котором я написал, чтобы получить список на стороне сервера всех изменений, которые сделал клиент (например, в псевдокоде: изменения [0] = {Action = Delete, ProductID = 1}, изменения [1] = {Action = New, ProductID = 1, Name = "aaa"}). Как мне это сделать?

Спасибо.

+1

Я думаю, что акроним «KISS» подходит - держите его простым глупо. Не переусердствуйте, звучит так, что это будет трудно поддерживать. – diagonalbatman

+0

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

ответ

0

Просто сделайте частичный вид для каждой страницы конфигурации и загрузите его по мере необходимости. Я согласен, что KISS лучше.