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



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

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

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

但我不确定这是否可以使用门户模板访问。

如果这不可能,我必须创建一个ASPX模板——它是否可以引用基于门户的主页,或者我也必须将其提取到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这可以是一个有效的替代

Async并不能很好地适应控件的整个webforms生命周期,回调可能会打破这个周期,例如,如果加载了页面。运行工作线程或AJAX调用通常是更好的选择。甚至AsyncControl也会在某个时刻附加到线程,并利用它来完成任务,并在此基础上更改其渲染。

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