asp mvc - как лучше всего динамически добавлять элементы управления данными - PullRequest
2 голосов
/ 05 января 2010

Сценарий: у меня следующая структура; Группа (родитель) -> Элемент (дочерний).

  • Группа может иметь много предметов.
  • и группа, и элемент имеют только одно редактируемое поле (строка)

В других данных родительской / дочерней таблицы я использовал частичное представление для отображения как родительских, так и дочерних данных, причем дочерние данные представляют собой стандартный индекс MVC (т. Е. Список элементов с опцией edit / detials рядом с каждым).

Однако в этом сценарии у родителя есть только одно поле, как и у дочернего, поэтому я не хочу открывать отдельное представление для создания / редактирования новых дочерних записей.

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

Итак, я мог (как-то) написать некоторый javascript для создания текстового поля каждый раз, когда вы нажимаете кнопку, чтобы добавить новую строку, а затем каким-то образом в контроллере сохранять данные после завершения.

Кто-нибудь делал что-то похожее на это и может указать мне правильное направление?

1 Ответ

0 голосов
/ 05 января 2010

Для манипулирования данными на стороне клиента я использую функцию micro-template от John Resig и создаю скрипт, который будет обновлять dom. Вот образец Джона:

<script type="text/html" id="item_tmpl">
  <div id="<%=id%>" class="<%=(i % 2 == 1 ? " even" : "")%>">
    <div class="grid_1 alpha right">
      <img class="righted" src="<%=profile_image_url%>"/>
    </div>
    <div class="grid_6 omega contents">
      <p><b><a href="/<%=from_user%>"><%=from_user%></a>:</b> <%=text%></p>
    </div>
  </div>
</script>

Затем вы можете поддерживать объект или массив с новыми данными, которые вы будете сериализовать в скрытое поле и отправлять на сервер. Пример Джона довольно прост и должен помочь вам.

Если вам нужно больше, отправляйтесь в Encosia Дэйва Уорда, поскольку он написал пост об этом .

...