Модель MVC 3 привязана к половине длинного стола - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь привязать к довольно большой таблице базы данных SQL с более чем 100 полями.Я выполняю базовые операции CRUD, и когда дело доходит до редактирования, я решил разделить редактирование на две страницы (представления), просто чтобы сохранить длину страниц управляемой и удобной для пользователя.Я использую MVC 3 (C #) с Entity Framework для сопоставления базы данных.

Мой вопрос - как мне привязать «половину» этой таблицы в каждом ActionResult?Есть две проблемы - я проверяю большинство входных данных, используя частичный класс и атрибут MetadataType.Как разделить проверки, чтобы одна страница не проверяла поля для другой?Во-вторых, как связать только половину свойств таблицы?Многие из них не имеют значения NULL и будут вызывать ошибки базы данных, если они попытаются выполнить привязку без соответствующих входных данных формы.

Я знаю, что могу использовать [Bind (Include = "...")] или [Bind (Exclude = "... ")] в моих двух ActionResults, но кажется довольно нелогичным и не СУХОЙ перечислить 50 отдельных полей в теге include или exclude.Есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

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

Вы должны размещать только те свойства, которые вы используете в представлении, в модели представления для каждого представления.

Во-вторых, если ваша модель данных не способствуетпостепенные обновления, тогда вам придется хранить данные из каждого представления где-то, чтобы вы могли сделать одно обновление.

Вы можете сохранить их во временной таблице или сериализовать данные и сохранить их в скрытом поле в представлении.Проект MVC Futures предоставляет удобный помощник Serialize html, который поможет с этим.В любом случае вам нужно будет разбить все на части, чтобы можно было выполнить частичное редактирование.

0 голосов
/ 24 февраля 2012

Я думаю, что, возможно, неправильно понял это ... после тестирования похоже, что привязка модели MVC в конце концов допускает частичное связывание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...