несерверные элементы управления и частичные обратные передачи - PullRequest
0 голосов
/ 12 февраля 2011

Я вставляю некоторые несерверные элементы управления (простые HTML-элементы управления) динамически в панель обновления с помощью jQuery.

Если я выполняю полную обратную передачу, я могу получить значения этих элементов управления, используя Request.Form, однако, если я делаю частичную обратную передачу, я не могу.

Смогу ли я получить значения элементов управления html при частичной обратной передаче? Или только элементы управления с runat = "server"?

Я использую не серверные элементы управления, так как я играю с Facebox и элементами управления загрузкой файлов ... это не красиво: - |

Ответы [ 2 ]

0 голосов
/ 13 июня 2016

Вы можете получить все значения любого элемента управления формы или элементов управления, которые вы хотите в Частичной обратной передаче.Это тривиальный ответ, но на первый взгляд интуитивно не очевидный.Возможно, именно поэтому ASP.net мертв.

Помните, что параметры

__doPostback(string controlId,string param)

являются строками, а методы ASP.net

Request.Params.Get("__EVENTTARGET"); // id
Request.Params.Get("__EVENTTARGET"); // parameter

возвращают строки.

Поэтому простой ответ таков:

  1. Создайте объект javascript с парами значений ключей всех ваших элементов формы, которые вы хотите отправить обратно в свой партиал.

  2. Стригируйте этот объект и передайте его как второй параметр вашего вызова __doPostBack.

На стороне сервера вы просто изменяете этот процесс, чтобы извлечь свой объект и все значения формы, которые вам нужны.

Например:

var strigifiedObject = JSON.stringify(myFormObject);
var id = "partialPostback";
__doPostBack(id, strigifiedObject);

... между тем на стороне сервера

string id = Request.Params.Get("__EVENTTARGET");
string param = Request.Params.Get("__EVENTARGUMENT");

if (id == "partialPostback") {
    List<MyObj> formVals = new JavaScriptSerializer().Deserialize<List<MyObj>>>(param);
}
0 голосов
/ 12 февраля 2011
Панель обновления

не является эффективным способом асинхронного выполнения.

Поскольку вы уже используете jQuery, добавьте веб-сервис (.asmx) в свой проект и нажмите его.См. Рисунок 4 этой статьи: http://msdn.microsoft.com/en-us/magazine/cc163413.aspx

Request.Form создается из состояния представления, к которому ваши элементы управления добавляться не будут.

...