Выбрав MVC для разработки нашего нового сайта, я нахожусь в разгаре «лучших практик», разрабатываемых вокруг меня в явном реальном времени. Две недели назад NerdDinner был моим проводником, но с разработкой MVC 2, даже он устарел. Это захватывающий опыт, и я чувствую себя привилегированным в тесном контакте с умными программистами ежедневно.Рекомендации по обновлению модели модели и модели с подмножеством полей
Прямо сейчас я наткнулся на проблему, на которую я, похоже, не могу получить прямой ответ - от всех блогов в любом случае - и я хотел бы получить некоторое представление от сообщества. Речь идет об редактировании (читайте: «Изменить действие»). Основная часть материала, учебники и блоги, посвящена созданию и просмотру модели. Поэтому, хотя в этом вопросе не может быть и речи, я надеюсь, что вы продолжите обсуждение, внося свой вклад в мое решение о пути развития, который я должен предпринять.
Моя модель представляет пользователя с несколькими полями, такими как имя, адрес и адрес электронной почты. Все имена, по сути, в поле для каждого имени, фамилии и имени. В представлении «Сведения» отображаются все эти поля, но вы можете изменять только один набор полей за раз, например, ваши имена. Пользователь расширяет форму, в то время как другие поля все еще видны сверху и снизу. Таким образом, форма, отправленная назад, содержит подмножество полей, представляющих модель.
Несмотря на то, что это привлекательно для нас и наши макеты, по разным причинам, его избегают серьезные MVC-разработчики. Я читал о некоторых шаблонах и лучших практиках, и кажется, что это не является ключом к парадигме viewmodel == view. Или я ошибаюсь?
В любом случае, NerdDinner диктует использование FormCollection och UpdateModel. Все нулевые поля счастливо игнорируются. С тех пор сообщество MVC отказалось от такого подхода до такой степени, что bug в MVC 2 не был обнаружен. UpdateModel не работает без полной модели в вашем формате.
view model pattern получать большую похвалу, кажется, Dedicated вид модели, которая содержит пользовательские модели вид сущности и является единственным, что мой дизайн вопрос может быть совместим с. Это влечет за собой утомительное количество картографирования, хотя и облегчается использованием AutoMapper и ideas Джимми Богарда, что может быть или не быть целесообразным. Он также предлагает соотношение 1: 1 между моделью просмотра и представления.
В соответствии с этими парадигмами дизайна я должен создать представление и связанный с ним вид для каждого из моих расширяющихся наборов полей. Модели просмотра будут почти одинаковыми, отличающимися только полями, доступными только для чтения, и представления, которые также содержат много повторяющуюся разметку. Мне это кажется абсурдным. В будущем я могу захотеть отобразить одновременно два, более или все наборы полей.
Я очень внимательно прочитаю дискуссию, которую я надеюсь искры. Спасибо заранее.
«В представлении« Сведения »отображаются все эти поля, но вы можете изменять только один набор полей за раз, например, ваши имена. «Почему?» Почему это более дружелюбно, чем позволить пользователю полностью отредактировать всю форму? – jfar
Вы правы, я буду перефразировать. Это менее беспорядочно и компактнее. У вас может быть несколько адресов, добавить, удалить, но мы все еще хочу, чтобы это было на одной странице. – Martin
Вы очень хорошо объяснили свою озабоченность. У меня была такая же проблема, и я перешел к шаблону View: ModelModel, показанному Джимми Богардом 1: 1. Основная проблема, с которой я все еще сталкиваюсь, - это сопоставление ViewModels, в которых есть несколько доменных моделей. – WDuffy