лучший (самый простой) способ добавить динамический контент в приложение asp.net webforms - PullRequest
0 голосов
/ 02 декабря 2010

Я работаю над приложением asp.net webforms, и мне нужно создать «динамические строки заказа» То есть: Вы выбираете продукт и количество, и сумма рассчитывается. Чтобы визуализировать: это в одной «строке», так что сначала выпадающий список продуктов, рядом с ним текстовое поле количества и рядом с ним метка количества.

Затем вы нажимаете «добавить еще один товар», и добавляется еще одна «строка» с выпадающим списком товаров, текстовым полем количества и меткой количества.

Так что вы можете нажать добавить и добавить и добавить ....

Теперь я думал, как это реализовать, и придумал два варианта:

«добавить клиентскую часть HTML» и «добавить серверную часть управления пользователями»

Первый выглядит, конечно, более навороченно, но мне также нужно создать некоторый код на стороне сервера, чтобы снова генерировать строки, когда пользователь говорит «уйти», но после проверки я должен предупредить пользователя, например, что сумма превышена или количество было слишком высоким. Затем я добавил html «на стороне клиента», и мне нужно воспроизвести это в моем коде, я прав?

С другой стороны (добавьте серверную часть пользовательского элемента управления), мне нужно создать новый пользовательский элемент управления при обратной передаче «и другой продукт», который вначале может показаться более простым, потому что он весь строго типизирован, и на стороне клиента (jquery). / Javascript) не так ли?

Я с нетерпением жду вашего мнения.

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

Похоже, что это будет сложно сделать на стороне клиента, особенно с генерацией идентификаторов?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010

www.ajax.net :)

1 голос
/ 02 декабря 2010

Использование скрытого поля с JSON

Добавление дополнительных полей кажется неправильным для добавления на стороне сервера.

  1. Требуется слишком много времени, чтобы добавить еще один
  2. У вас могут быть проблемы с позицией прокрутки
  3. И это такой простой и очень быстрый процесс для клиента.

Я предлагаю вам разместить на своей странице скрытое поле и сохранить в нем данные всех этих полей в виде строки JSON. На стороне сервера вы можете просто использовать класс JavaScriptSerializer для десериализации JSON и получения всех данных, которые были сгенерированы на клиенте, в виде экземпляра объекта строгого типа, что еще лучше!

Но в противном случае ... Все поля ввода, которые вы добавляете с помощью Javascript, не будут иметь состояния просмотра на стороне сервера, но вы все равно сможете получить доступ к их значениям в Request.Form["SomeName"], что означает, что вы можете присвоить им любое имя / имя, какое пожелаете как они уникальны.

Какой-то код

Я бы добавил все поля ввода с определенным классом CSS, таким как dynamic, чтобы было проще собрать их все для генерации JSON. Этот код сгенерирует ваш JSON-объект, который следует поместить в скрытое поле:

$(".dynamic:input").live("blur", function(e))
{
    var jsonData = $(".dynamic:input").serializeArray();
    // use some lib or plugin to save it into hidden input field
}

Существует множество библиотек, а также плагинов jQuery, которые преобразуют этот jsonData объект в строку. Этот вопрос Stackoverflow имеет много возможностей. Проверьте ответы.

Asp.net AJAX на самом деле не улучшение

Использование библиотеки Asp.net AJAX в соответствии с предложением Брайана Бринли заставит вещи выглядеть так, как будто они сгенерированы на клиенте, но все равно будет медленным, так как обычный запрос к серверу будет Это означает, что все состояние просмотра будет передано обратно на сервер, и весь цикл обработки страниц будет обработан перед возвратом. Эта библиотека на самом деле не подходит для серьезных сложных проектов, и я думаю, что большинство с этим согласится.

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