Вложенные коллекции, соответствующие наименованию входных элементов

#asp.net-mvc-3 #razor

#asp.net-mvc-3 #razor

Вопрос:

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

Для того, чтобы «теги» были отправлены обратно на мой контроллер соответствующим образом, входные элементы должны быть названы соответствующим образом (см. Этот пост:http://jarrettmeyer.com/post/2995732471/nested-collection-models-in-asp-net-mvc-3)

т. е.

 <input name="Programs[3].Tags[7].Id" value="MyTag" />
  

При первом рендеринге моего представления я использую EditorTemplates и EditorFor для рендеринга HTML, который дает мне точное наименование, самое главное, что он знает, какие «числа» использовать.

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

Ответ №1:

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

Комментарии:

1. Спасибо, Дэнни. Я ненавижу возвращаться к DOM с помощью Javascript только для регистрации индексов. Вы не знаете способа перенести индекс в скрытый элемент с помощью Razor во время его создания?

2. К сожалению, я не знаю простого способа. Я согласен, что делать это в JS отстой : (

3. c’est la vie! Еще раз спасибо, Дэнни.