Freigeben über


Использование контролов Web Forms во вспомогательных методах (хэлперах) MVC Framework

После предыдущего поста про методы-хэлперы в MVC Framework, мне задали вопрос об использовании существующих контролов Web Form для генерации разметки на уровне метода-хэлпера.

Сделать это можно просто, учитывая, то класс WebControl, которому наследуют классы конкретных контролов, содержит метод Render, генерирующий разметку. Как раз метод Render использует инфраструктура Web Forms, для всех элементов управления на страницах.

Воспользоваться контролом в методе-хэлпере просто:

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();

    }
}

Создаем экземпляр контрола, задаем его свойства, вызываем методы, а затем генерируем разметку, которую возвращаем из соответствующего хэлпер-метода.

Зачем это может быть полезно?

В случаях когда у вас есть желание использовать разметку, создаваемую уже существующим контролом Web Forms . Разумеется, если контрол предполагает интерактивность, использовать его напрямую не получится и, функциональность придется переписывать, либо использовать Web Forms внутри MVC проекта.