Как представить выбор «многие ко многим» в MVC3 View? - PullRequest
0 голосов
/ 20 февраля 2011

В моей модели у меня есть объект Product, у меня есть объект Author, и они имеют отношение многие ко многим, поэтому у меня также есть объект ProductAuthor.
С функциональной точки зрения мне нужно текстовое поле в моем представлении, где пользователь может ввести имя автора, я буду искать его (используя Ajax) и отображать несколько результатов внизу, а затем пользователь может щелкнуть, чтобы добавить одно (или несколько), и выбранные из них отображаются рядом с этим окном поиска. Затем, когда я нажимаю Сохранить в моей форме, все сохраняется (в контроллере), а не раньше (поэтому нет асинхронного метода AddAuthor).
Кроме того, если я загружаю Продукт для редактирования, и к нему уже прикреплены авторы, я хочу, чтобы они отображались, и пользователь должен иметь возможность отменить их выбор (поэтому, когда он нажимает сохранить, они больше не будут подключены).

Как мне представить его в представлении? Это нормально, если мне нужно написать цикл foreach на дисплее, но при отправке, как они будут отправлены? Сгенерировал ли я скрытые поля для каждого выбранного автора? Если да, то как их назвать, чтобы я мог получить к ним доступ в контроллере? Могут ли они быть каким-либо образом сериализованы в типизированные сущности, или мне придется искать их в FormCollection?

Бонус, если я могу использовать ту же вещь с очень небольшим изменением для отношения один-ко-многим (когда статья может иметь только одного автора, но я не хочу использовать выпадающий список для этого, так как может быть многих авторов, и поиск по ним не будет возможен, и если я напишу асинхронный FindAuthor для сценария «многие ко многим», я бы также хотел использовать его в сценарии «один ко многим».

1 Ответ

1 голос
/ 20 февраля 2011

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

<input id="authorIDs" type="hidden" value="56,64,33" />

, которые можно использовать FormCollection или Типизированный объект , чтобы получить эти данные.

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