Как обрабатывать многослойные события ASP .NET, состояния и обратные вызовы на одной странице? - PullRequest
0 голосов
/ 05 июня 2009

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

Посмотри это изображение: see the image

Я знаю, что кто-то может использовать:

  • JavaScript для клиентского скрипта, который изменяет <input type="text" style="display:none"/> элементы управления для передачи переменных JavaScript в ASP .NET
  • использовать ClientScript.RegisterStartupScript для вызова функции javascript после обратных передач
  • перезагрузить содержимое для динамических элементов управления после обратной передачи

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

Я бы обычно делал это:

  • несколько страниц
  • каждая страница является полностью определенным состоянием
  • передача переменных QueryString через страницы
  • предоставление пользователю опции «Назад с одним шагом»

Мой менеджер проекта не позволит мне сделать это в моем собственном стиле.
Нет ASP .NET AJAX, говорят, что это делает страницу слишком большой и медленной.

1 Ответ

2 голосов
/ 05 июня 2009

Прежде всего, пытаясь использовать <input type="text" style="display:none"/>, вы заново изобретаете колесо. Вместо этого используйте <input type='hidden' />.
Проблема слишком больших страниц не в ASP.NET AJAX (но мне все равно это не нравится), а в абстракции веб-форм ASP.NET. Часто viewstate становится слишком большим (60-70% веса страницы и более), и это действительно плохо. Также, когда у вас есть только одна форма с большим количеством элементов управления для редактирования, все значения входов (html-входы, в asp.net - текстовые поля, флажки и т. Д.) Будут отправляться обратно на сервер при каждой обратной передаче. На мой взгляд, это плохо, очень плохо. Решение не в том, чтобы использовать веб-формы. Вы можете попробовать ASP.NET MVC. Используя его, вы легко можете контролировать все, что вам нужно, и нет головной боли с состояниями просмотра, состояниями управления, жизненным циклом страницы и управления, глупыми идентификаторами ctl0 $ ctlSomeValue $ ctlAnotherParam $ MyCoolTextBox (это будет изменено в ASP.NET 4). Я сделал свой выбор - больше нет веб-форм, привет, mvc!
О вашей ситуации. Вы можете создать веб-сервис (некоторый RESTful или что-то в этом роде), который предоставит все методы для добавления / редактирования / перемещения / удаления элементов. И создайте страницу, которая будет использовать этот сервис для добавления / создания / перемещения / удаления элементов. Это требует хорошего знания JS или, по крайней мере, большого желания изучать его. Я предпочитаю такой подход, на странице будут только небольшие запросы на выполнение некоторых действий, поэтому пользователь будет счастлив. И информация на странице и состояние страницы не будут нарушены - все запросы к сервису будут через AJAX.
Другое решение состоит в том, чтобы управлять всеми этими состояниями вручную - в скрытых полях, переменных запроса и так далее. Это очень сложный и сложный подход для ASP.NET WebForms. И это займет много времени.
Поэтому я советую перейти на MVC или создать интерфейс пользователя для службы.
И еще один камень в сторону ASP.NET WebForms - http://blog.stevehorn.cc/2009/05/aspnet-webforms-and-mvc.html

...