На самом деле есть два возможных решения вашей проблемы:
Панель обновления
Как уже упоминалось многими, вы можете обернуть существующие элементы управления в UpdatePanel
(ссылка) Тем не менее, это все еще заставляет содержимое панели отправлять обратно на сервер, но это наиболее простой и быстрый способ реализации с наибольшим , заметным , удобством использованияулучшение.
Асинхронные обратные вызовы
Используя асинхронный обратный вызов в .NET (ссылка) , вы можете с гораздо большим количеством контроля отправлять данные в и из ваших файлов JavaScript;
Вы можете выполнять методы на стороне сервера, вызывая определенную функцию javascript, которую вы зарегистрировали на начальной странице:
void Page_Load(object sender, EventArgs e)
{
ClientScriptManager cm = Page.ClientScript;
String cbReference = cm.GetCallbackEventReference(this, "arg","ReceiveServerData", "");
String callbackScript = "function CallServer(arg, context) {" + cbReference + "; }";
cm.RegisterClientScriptBlock(this.GetType(),"CallServer", callbackScript, true);
}
Это связано с реализацией интерфейса ICallbackEventHandler
, предоставляющего вам два метода:а именно:
RaiseCallbackEvent
: Событие, которое вызывается при отправке данных из вашего клиента javascript и содержит переменную аргумента.(С помощью JSON
эта единственная переменная переменная легко преодолевается.)
GetCallbackResult
: По завершении метода на стороне сервера вы можете отправить результат в виде строки, содержащей все, что вы можетеТребуется вернуться на вашу страницу.
Это очень подходит для длительных процессов, возвращающих подтверждение или проверяющих простые условия перед полной обратной публикацией, и значительно улучшит удобство использования.
Объединение этих двух методоввозможно и найти медиану между отправкой серверных элементов управления назад (сетки, выпадающие списки и т. д.) и проверкой определенных условий (на стороне сервера) без повторной отправки только для того, чтобы обнаружить, что некоторые условия не были выполнены.