ASP.NET MVC Modelbinder и массивы с нерегулярными индексами - PullRequest
1 голос
/ 10 мая 2011

У меня есть шаблон EditorFor, который связывается со списком и создает HTML-элементы с атрибутами имени, которые представляют элементы в массиве, например,

<input id="Contacts_0__Uid" name="Contacts[0].Uid" type="hidden"
 value="sdfsdfs6-f1a1-44e4-af30-9cfb00a8d654">
 <input id="Contacts_1__Uid" name="Contacts[1].Uid" type="hidden"
 value="f9826696-f1a1-44e4-af30-9cfb00a8d654">
 <input id="Contacts_2__Uid" name="Contacts[2].Uid" type="hidden"
 value="23423skf-f1a1-44e4-af30-9cfb00a8d654">

У меня есть фрагмент JavaScript, который удаляет строку изТаблица.В результате, когда форма отправляется на сервер, индексы массива списка не синхронизированы, например:

<input id="Contacts_1__Uid" name="Contacts[1].Uid" type="hidden" value="f9826696-f1a1-44e4-af30-9cfb00a8d654">
<input id="Contacts_3__Uid" name="Contacts[2].Uid" type="hidden" value="23423skf-f1a1-44e4-af30-9cfb00a8d654">

Нет индекса элемента 0. Кажется, что связыватель моделей игнорируетэтот список, когда индексы не синхронизированы.

Я знаю, что мог бы написать какой-нибудь javascript для изменения атрибутов имени, но мне интересно, есть ли способ обойти это на сервере?

1 Ответ

0 голосов
/ 11 июля 2014

Очень поздний ответ, но он может помочь кому-то еще.

Не удаляйте элементы DOM (строки) с помощью JavaScript. Вместо этого пометьте их для удаления с помощью специального атрибута, например «уничтожить», и скрыте их из поля зрения. Таким образом, они будут отправлены обратно на сервер, и ваш массив останется нетронутым.

Затем, на стороне сервера, вы можете оценить весь массив, проверить все элементы на наличие атрибутов «destroy» и выполнить фактическую логику удаления, прежде чем сохранять граф объекта.

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