Как преобразовать существующий элемент управления пользователя в веб-часть Kentico?

У меня есть существующий пользовательский элемент управления BigForm.ascx:

<%@ Control 
    Language="C#" AutoEventWireup="true" 
    CodeFile="BigForm.ascx.cs" Inherits="BigForm" %>

<asp:Panel runat="server" DefaultButton="btnSubmit">
    <%--SUPER COMPLICATED FORM--%>
    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
</asp:Panel>

BigForm.ascx очень сложен - он динамически добавляет субэлементы управления к заполнителям, инкапсулирует множество бизнес-логики, разметка сильно настраивается и т. Д.

Я могу добавить BigForm.ascx в Kentico, используя веб-часть «Пользовательский контроль», и он отлично работает.

Но если я конвертирую BigForm.ascx в «правильную» веб-часть - путем наследования от CMSAbstractWebPart вместо UserControl - обратные передачи не срабатывают. Я нажимаю кнопку отправки, и ничего не происходит.

Я видел документацию Kentico по разработке форм с использованием формы builder, но этот пользовательский элемент управления уже работает отлично, и я подозреваю, что его слишком сложно построить с помощью WYSIWIG. Не говоря уже о том, что я очень предпочитаю создавать формы с помощью Visual Studio.

Насколько я понимаю, использование веб-части - это «правильный» подход к Kentico, и это позволит пользователям указывать свойства этой веб-части (например, если мы захотим перевести форму в будущем, мы могли бы добавить «Текст метки имени» в веб-части, и пользователь может ввести «Vorname» вместо «Имя»).

Что мне нужно сделать, чтобы преобразовать рабочий элемент управления пользователя в веб-часть Kentico?


person George    schedule 06.05.2015    source источник


Ответы (1)


Во-первых, если он не сломался, не чините его, если только вы не хотите или не хотите, чтобы в вашем распоряжении было больше разнообразия. Если ваш сложный элемент управления хорошо работает с использованием веб-части User Control, и вы не готовы использовать готовые функции Kentico, то я бы посоветовал придерживаться веб-части User Control, потому что она работает.

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

Одно из больших различий, которое вы заметите, - это событие Page_Load, которое есть, но мало используется. Используется событие OnContentLoaded, которое происходит перед стандартным событием asp.net OnInit. Здесь вы устанавливаете все значения своих свойств и загружаете свои данные. События кнопок происходят так же, как в стандартных формах, после события Page_Load. Как и стандартный asp.net, любые динамически загружаемые элементы управления необходимо перезагружать / создавать при каждой обратной публикации. Элементы управления, которые содержат данные, также должны быть привязаны к каждой публикации. Это не означает, что вам нужно снова получить данные, потому что механизм кэширования великолепен, это означает, что элементу управления должен быть назначен DataSet, а не загружаться условно. Взгляните на этот пример, чтобы узнать, как загружать кэшированные данные в Кентико.

Что касается создания форм, да, он хорошо работает в Visual Studio, никаких разногласий там нет, хотя когда вам нужно создавать и обрабатывать все ваши действия CRUD вручную, а не просто перехватывать эти события, либо внутри вашей веб-части, либо глобально, это делает его намного проще, динамичнее, надежнее и быстрее.

Поскольку Kentico давно занимается разработкой, нужно немного перестать думать, что вам нужно разрабатывать все с нуля. Во многих случаях инструмент, который вы используете, в данном случае Kentico, уже имеет стандартные элементы управления, созданные для того, что вы делаете или должны делать. ИЛИ, если у вас есть сложное решение, очень хорошо работает разбиение его на более мелкие части и создание меньших пользовательских элементов управления и динамическая загрузка их в вашу веб-часть.

Удачи в ваших начинаниях!

Документация по форме
Работа с данными формы с помощью API

person Brenden Kehren    schedule 06.05.2015
comment
Спасибо, Бренден. Я оставлю их пока как есть. - person George; 08.05.2015