Как опубликовать динамически созданные поля в таблице с помощью jquery/asp.net mvc
-
20-09-2019 - |
Вопрос
У меня есть кнопка, которая будет динамически создавать новую запись (строку в таблице) с помощью jQuery.Каждая запись представляет собой строку в таблице html.
Для каждой строки каждый столбец имеет входные данные (текстовое поле, переключатель, флажок) и т. д.
Поскольку вы можете добавить столько строк, сколько захотите, в итоге вы получите некий массив или коллекцию этих строк.
Когда я публикую форму, я, кажется, не вижу этих данных в коллекции форм и не совсем понимаю, как преобразовать эти элементы управления в объект данных для привязки.
Итак, по сути, есть 2 вопроса:
Есть ли какие-либо проблемы с динамически создаваемыми элементами управления и их отображением в сообщении формы?
Как передать табличную структуру данных моему контроллеру.Я почти хочу, чтобы каждая строка представляла некоторый объект записи, а затем передавала коллекцию записей контроллеру, если что-то подобное возможно.
Какие-либо предложения?
Решение
Чтобы получить коллекцию, убедитесь, что имена текстовых полей имеют вид «MyRecord.MyList[0].Field1».MVC автоматически преобразует это в перечислимое.При добавлении JavaScript просто убедитесь, что каждая добавленная строка имеет правильно увеличенный индекс (например, новые поля с именем «MyRecord.MyList[1].Field1»).
Другие советы
Вам необходимо убедиться, что ваши динамически созданные элементы находятся между тегами формы.
Привязка модели по умолчанию будет привязана к массиву объектов, если вы обязательно назовете свои поля таким образом, чтобы они стали «Thing[3].Name» (это поле «Имя» в четвертой строке, массив с нулевой привязкой).
Ваша подпись для вашего метода Action станет примерно такой:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MethodName(thing[] things)
{
...
}
Доброта,
Дэн
Убедитесь, что идентификатор каждой строки уникален, но он должен отправляться обратно, если находится в форме, отправляемой на сервер...Как у тебя дела с постом?Вы делаете публикацию с помощью JQuery?