Шаблон страницы портала Kentico 11 - как настроить Page AsyncMode? - PullRequest
0 голосов
/ 16 ноября 2018

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

Я знаю, что для шаблона на основе ASPX мы увидим свойство Page, например:

<%@ Page Title="" Language="C#" ...... Async="true" %>

Но я не уверен, доступно ли это через шаблон портала.

Если это невозможно, и мне нужно создать шаблон ASPX - возможно ли для него ссылаться на masterPage на основе портала, или мне тоже нужно вытащить это на страницу aspx?

Причина, по которой мне нужен этот набор свойств, заключается в поддержке этого кода:

protected void btnProcessPayment_Click(object sender, EventArgs e)
{
   Page.RegisterAsyncTask(new PageAsyncTask(ExecuteValidation));
}

private async Task ExecuteValidation()
{

Я считаю, что это надежная реализация в веб-формах.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

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

Может работать, если на странице нет других сложных элементов управления.MVC действительно поможет здесь, но это выходит за рамки Kentico 11 и портала на данный момент.

0 голосов
/ 16 ноября 2018

Хотя я не уверен, что вы можете установить целую страницу как Async, здесь есть и другие варианты.

  1. Вы можете использовать Kentico AsyncControl - этот элемент управления используется во всем интерфейсе администратора для асинхронной обработки

  2. Вы можете использовать Kentyn's AsyncWorker - если по какой-то причине вы не можете используйте AsyncControl, это может быть допустимой альтернативой

...