Kentico 11 门户页面模板 - 如何设置页面异步模式?

Kentico 11 Portal Page Template - how to set Page AsyncMode?

我有一个位于门户页面模板中的自定义 Web 部件。它需要在单击按钮时调用异步 Web api 方法。

我知道对于基于 ASPX 的模板,我们会看到页面 属性 如:

<%@ 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()
{

我发现这是一个可靠的 Web 表单实现。

虽然我不确定您是否可以将整个页面设置为异步,但这里还有其他选项。

  1. 您可以使用 Kentico 的 AsyncControl - 此控件在整个管理界面中用于异步处理

  2. 您可以使用 Kentico 的 AsyncWorker - 如果由于某种原因您不能 使用 AsyncControl 这可能是一个有效的选择

异步并不能很好地适应整个 webforms 的生命周期,因为控件和回调可能会破坏循环,例如,如果加载页面。 运行 工作线程或 AJAX 调用通常是更好的选择。甚至 AsyncControl 也会在某个时候附加到线程并利用它来完成工作并根据它更改其呈现。

只要页面上没有其他复杂的控件,它就可以工作。 MVC 在这里确实有帮助,但这超出了 Kentico 11 和门户网站的范围。