Как разместить динамически созданные поля в таблице с помощью jquery / asp.net mvc - PullRequest
1 голос
/ 18 декабря 2009

У меня есть кнопка, которая будет динамически создавать новую запись (строку в таблице) с помощью jQuery. Каждая запись является строкой в ​​HTML-таблице.

Для каждой строки в каждом столбце есть ввод (текстовое поле, переключатель, флажок) и т. Д.

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

Когда я публикую форму, я не вижу этих данных в наборе форм и не совсем понимаю, как преобразовать эти элементы управления в объект данных для привязки.

Так что по сути есть 2 вопроса:

  1. Есть ли какие-либо проблемы с динамически созданными элементами управления и убедитесь, что они отображаются в форме сообщения?

  2. Что такое способ передачи структуры данных таблицы моему контроллеру. Я почти хочу, чтобы каждая строка представляла некоторый объект записи, а затем передавал бы коллекцию записей контроллеру, если что-то подобное возможно.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 18 декабря 2009

Чтобы получить коллекцию, убедитесь, что имя текстового поля выглядит примерно так: «MyRecord.MyList [0] .Field1». MVC автоматически вытянет это до перечисляемого. Для добавления в JavaScript просто убедитесь, что каждая добавленная строка имеет правильно увеличенный индекс (например, новые поля с именем «MyRecord.MyList [1] .Field1»).

0 голосов
/ 18 декабря 2009

Убедитесь, что идентификатор каждой строки уникален, но он должен публиковаться обратно, если в форме, которая отправляет на сервер ... Как вы делаете сообщение? Вы делаете сообщение с JQuery?

0 голосов
/ 18 декабря 2009

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

Привязка модели по умолчанию будет привязана к массиву объектов, если вы удостоверитесь, что ваши поля названы так, чтобы они стали «Вещь [3]. Имя» (это поле «Имя» в четвертой строке с нулевой границей). массив)

Ваша подпись для вашего метода Action становится такой:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MethodName(thing[] things)
{
    ...  
}

Доброжелательность,

Dan

...