Написание модульных страниц с помощью ASP.NET MVC 4

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

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

Мои вопросы:

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

Спасибо.


person Shahar Gvirtz    schedule 08.05.2013    source источник
comment
Я думаю, что аббревиатура «KISS» подходит — Keep it Simple Stupid. Не переусердствуйте с инженером, звучит так, будто это будет сложно поддерживать   -  person diagonalbatman    schedule 09.05.2013
comment
Если окажется, что это только усложняет вещи, я, вероятно, сделаю это более простым. я пытаюсь проверить, могу ли я сделать немного больше работы сейчас, чтобы сэкономить много времени в будущем (и упростить обслуживание), поскольку в эту систему регулярно добавляются новые типы конфигураций, и я хочу сделать их действительно легко добавить на сайт конфигурации.   -  person Shahar Gvirtz    schedule 09.05.2013


Ответы (1)


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

person ChiliYago    schedule 08.05.2013