Как передать список целых чисел в действие MVC? - PullRequest
7 голосов
/ 09 июля 2010

У меня есть действие, которое зависит от списка целых чисел.Моим первым инстинктом было просто объявить действие с помощью List.

Я попытался объявить действие в контроллере как:

public ActionResult EditMultiple(List<int> ids)

и в моем вызове View примерно так:

<%= Html.ActionLink("EditMultiple", "EditMultiple", new { ids = new List<int> {2, 2, 2} })%>

Хотя он компилируется, список пуст, когда я ставлю точку останова в действии.Кто-нибудь знает почему или имеет альтернативный подход?

Добавление более подробной информации о сценарии:

Я пытаюсь "Редактировать" несколько сущностей одновременно.Я уже нахожусь в точке, где у меня есть приложение, которое позволяет мне создавать / редактировать / просматривать информацию о книгах в библиотеке.У меня есть частичное представление, которое позволяет пользователю редактировать информацию об отдельной книге и сохранять ее в базе данных.

Теперь я хотел бы создать представление, позволяющее пользователю редактировать информацию о нескольких книгах с помощьюодна кнопка отправки.Я создал действие EditMultiple, которое просто визуализирует партиал для каждой книги (моя модель для этого представления - Список), а затем добавляет кнопку отправки.

Ответы [ 2 ]

4 голосов
/ 09 июля 2010

Да.Связыватель модели по умолчанию может связывать «идентификаторы» с любой коллекцией ICollection.Но вы должны отправить несколько параметров с одинаковым именем.Это исключает использование вспомогательного метода «ActionLink».Вы можете использовать url helper Action и добавить идентификаторы к ссылке следующим образом:

<a href="<%= Url.Action("CreateMultiple")%>?ids=2&ids=1&ids=3">Test link</a>

Вот ссылка из блока Хаака.

2 голосов
/ 09 июля 2010

Я не думаю, что

new List<int> {2, 2, 2}

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

Ids=1&Ids=2&Ids=3

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

Почему ты так делаешь?Я надеюсь, что это псевдокод для чего-то еще ...

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