Выбрав MVC для разработки нашего нового сайта, я нахожусь в разгар «лучших практик», которые разрабатываются вокруг меня в реальном времени. Две недели назад, NerdDinner был моим гидом, но с развитием MVC 2, даже он кажется устаревшим. Это захватывающий опыт, и я чувствую честь быть в тесном контакте с умными программистами ежедневно.
Прямо сейчас я наткнулся на проблему, на которую, похоже, я не могу получить прямой ответ - во всех блогах в любом случае - и я хотел бы получить некоторое представление от сообщества. Это о редактировании (читай: Редактировать действие). Большая часть материалов, учебных пособий и блогов, посвящена созданию и просмотру модели. Поэтому, хотя этот вопрос может и не обозначить вопрос, я надеюсь, что начнется некоторое обсуждение, которое поможет принять решение о пути развития, который я выберу.
Моя модель представляет пользователя с несколькими полями, такими как имя, адрес и адрес электронной почты. Все имена, на самом деле, в поле для каждого имени, фамилии и отчества. В представлении «Подробности» отображаются все эти поля, но вы можете изменить только один набор полей за раз, например, свои имена. Пользователь расширяет форму, в то время как другие поля все еще видны сверху и снизу. Поэтому отправляемая форма содержит подмножество полей, представляющих модель.
Несмотря на то, что это привлекает нас и наши проблемы с версткой, по разным причинам, этого следует избегать серьезным разработчикам MVC. Я читал о некоторых шаблонах и лучших практиках, и кажется, что это не имеет отношения к парадигме viewmodel == view. Или я неправильно понял?
В любом случае, NerdDinner диктует использование FormCollection или UpdateModel. Все нулевые поля счастливо игнорируются. С тех пор сообщество MVC отказалось от этого подхода до такой степени, что ошибка в MVC 2 не была обнаружена. UpdateModel не работает без полной модели в вашей коллекции форм.
Образец модели модели , получивший наибольшую похвалу, представляется Модель выделенного представления, которая содержит объект модели настраиваемого представления и является единственной, с которой моя проблема дизайна может быть совместима. Это влечет за собой утомительное количество картирования, хотя и облегчается использованием AutoMapper и идей Джимми Богарда, которые могут или не могут быть полезными. Он также предлагает соотношение 1: 1 между представлением и моделью представления.
В соответствии с этими парадигмами проектирования я должен создать представление и связанный вид для каждого из моих расширяющихся наборов полей. Каждая из моделей представлений будет почти идентична, различаясь только полями, которые доступны только для чтения, а представления также содержат многократную разметку. Это кажется абсурдным для меня. В будущем я могу захотеть отображать два, более или все наборы полей, открытых одновременно.
Я буду очень внимательно читать дискуссию, которую надеюсь зажечь. Большое спасибо заранее.