Книга: ASP.NET MVC Framework

Использование серверных элементов управления WebForms

Использование серверных элементов управления WebForms

В главе 2, в разд. "Использование элементов управления WebForms в MVC-приложениях” уже была продемонстрирована возможность применения серверных элементов управления в представлениях MVC. Как уже было сказано ранее, использование серверных элементов управления может быть оправдано, если не требуется интерактивное взаимодействие с соответствующим элементом, и он используется только для генерации разметки.

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

Сделать это можно просто, учитывая, что класс Webcontrol, которому наследуют классы конкретных элементов управления, содержит метод Render(), генерирующий разметку. Как раз метод Render() применяет инфраструктура WebForms для всех элементов управления на страницах. Пример использования элемента управления WebForms приведен в листинге 5.14.

Листинг 5.14. Пример использования класса Button во вспомогательном методе

public static class WebFormsHelper {
  public static string WebFormsButton(this HtmlHelper html)
  {
    Button control = new Button { Text = "Web Forms Button" };
    StringBuilder sb = new StringBuilder();
    HtmlTextWriter htmlWriter = new HtmlTextWriter(
                                 new StringWriter(sb));
    control.RenderControl(htmlWriter);
    return sb.ToString();
  }
}

Листинг 5.14 демонстрирует концепцию использования серверных элементов управления: создать экземпляр класса элемента управления, задать его свойства, вызвать при необходимости методы, а затем сгенерировать разметку, которая будет возвращена вспомогательным методом.

В каких случаях подобный подход к использованию серверных элементов управления может быть оправдан? В случаях, когда у вас есть существующий элемент управления, отвечающий вашим требованиям, и для которого подобная обертка может быть удобной в использовании. Универсального рецепта для принятия решения, стоит ли использовать элемент управления подобным образом, — нет, однако имеет смысл задуматься в случае, когда для элемента управления приходится эмулировать серверные события. Зачастую в подобных ситуациях проще реализовать поддержку необходимой функциональности в самих вспомогательных методах.

Оглавление книги


Генерация: 1.278. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз