asp.net - 当我提供 ASP.NET 页面时,我可以并行呈现页面上的各种控件吗?

标签 asp.net multithreading rendering

当我提供 ASP.NET 页面时,我可以并行呈现页面上的各种控件吗?

我的页面上有一些 Telerik 控件 (RadGrid),当我单步执行正在加载的页面时,这些控件似乎是数据绑定(bind)并串行渲染的。 也许这种行为是因为我迷上了调试器。

是否有办法加载页面并在单独的线程上构建选择控件?这在概念上是可能的还是必须按顺序完成?

最佳答案

您有几个选择。您可以使用 ASP.NET 异步页面模型。这个想法是,您异步加载每个控件的数据,然后在检索数据时将该数据绑定(bind)到每个控件。

它看起来像这样:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsAsync) {
        dataSource.GetDataCompleted += 
          new GetDataCompletedEventHandler(GetDataCompleted);
        dataSource.GetDataAsync();
    }
    else {
        _yourCtl.DataSource = dataSource.GetData();
        _yourCtl.DataBind();
    }
}

void GetDataCompleted(object sender, GetDataCompletedEventArgs e) {
    _yourCtl.DataSource = e.Result;
    _yourCtl.DataBind();
}

您可以对页面上的每个控件执行相同的操作。最终结果是渲染页面的时间将等于渲染最慢渲染控件的时间。

另一种方法是使用 AJAX 加载控件。我不熟悉 Telerik RadGrid 控件,但我假设它支持 AJAX。以下是 Telerik 演示页面的链接,展示了如何执行 Telerik 网格的编程客户端绑定(bind):http://demos.telerik.com/aspnet-ajax/grid/examples/client/databinding/defaultcs.aspx .

关于asp.net - 当我提供 ASP.NET 页面时,我可以并行呈现页面上的各种控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3452849/

相关文章:

asp.net-mvc - ASP.NET MVC : Get an action output within another action

c# - 如何为我的应用程序构建搜索机制?

c# - SQL Server中如何获取同一日期之间的记录

.net - 在 BackgroundWorker 中加载数据时 GUI 卡住

.net - .NET上的线程安全阻止队列实现

c# - WPF - WritablebitmapEx 渲染平滑线

c# - View 中的多个模型 ASP.NET MVC(部分 View 方法)

asp.net - ASP .NET Core - Linux nginx ASPNETCORE_ENVIROMENT 错误

java - 为Spring Boot异步TaskExecutors配置线程池?

c# - 如何在 C# 中获取 HTMLAgilityPack DOM 元素的边界框?