.net 中page 类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net 中page 类相关的知识,希望对你有一定的参考价值。
一直没明白网页从服务器到客户端的这一过程,后台page类一执行,就会把.aspx文件整个传给客户端吗?这个过程怎么传的?传给客户端后,这个page的对象一直在吗,如果关闭网页,这个对象就会立刻消失吗,如果通过链接跳到其它网页,它会在吗?还有,如果客户端执行事件,事件或翻页之类的,aspx是把整个页重新传给客户端还是只传form里的数据 给客户端?我用的aspnetpager分页时,如果点分页太快,页面会一直闪白下,我看别人php的分页, 怎么点都不会闪,这怎么会事呢
还有.aspx文件是怎么到客户端的,是类似Response.Write()吗
执行事件 例如 单击事件 ,一个学生成绩表 一页 5 个学生 ,单击下一页 如果使用AJAX 则 服务器只会 将下 5个学生的成绩 传给客户 ,如果不是那么 将会传 HTML+新的5条 记录。 参考技术A http://www.cnblogs.com/xhwy/archive/2012/05/20/2510178.html 讲解页面生命周期的,看懂了,你问的几个问题大部分都是可以理解了。 至于你问的分页问题,分好几种,一种是全部都加载到内存,在已经加载好的内存中取所需要的数据,一种是直接传入当前的页数,根据页数的不同重新加载数据。 还有通过 Ajax实现分页的。 你说的不会闪就是通过ajax进行分页。而 ajax分页,可以借助 asp.net webform中的控件,也可以通过 自己写js代码来实现。
http://www.cnblogs.com/xiaofengfeng/archive/2012/05/20/2511012.html
ASP.Net:在 Page_Load 中调用异步方法
【中文标题】ASP.Net:在 Page_Load 中调用异步方法【英文标题】:ASP.Net: Call an async method in Page_Load 【发布时间】:2018-04-30 16:16:22 【问题描述】:我有这个 API 客户端,它有一个发送方法,用于将我的对象发布到 Web API 服务并返回 ReturnedResults 类型的对象。 现在我需要在 ASP.net page_load 事件中运行这个 post 方法。 我在这里看到了类似的例子,但是我需要的是从我的异步方法中获取我的返回对象。
我知道我应该使用
PageAsyncTask t = new PageAsyncTask(APIService.Send("test"));
但是我有两个问题,首先 PageAsyncTask 不接受我的 Send 方法作为有效的 Task 类型,我猜这是因为我的方法返回 Task 类型的 Task 所以它抱怨它不能将 Task 转换为 System.Func
还有,一旦我的 ReturnedResults 对象成功执行,我该如何从中取出它?
【问题讨论】:
***.com/questions/35899800/can-page-load-be-async 谢谢,但我看过那些文章,它们都对我的情况没有帮助,我需要从我的异步方法中获取结果,同时让它暂停页面加载,直到等待异步方法结束。 理想情况下,将重载方法放在 Page_Load 中并不是一个好主意。我不确定您的要求如何。但是,它可能需要修改您的系统设计。 复制者:***.com/questions/8242375/… 和 ***.com/questions/34204450/…。 Page_load a 自然是同步的。如果您想优化 IIS 吞吐量(如 MVC/Web API 中的异步控制器方法),Page.RegisterAsyncTask 没有意义。 Page.RegisterAsyncTask 更像是可管理的“即发即弃”。 【参考方案1】:仅仅因为你不能等待PageAsyncTask
的结果并不意味着任务本身不能启动更多你可以等待的功能。您可以利用这一点来进行异步页面加载。
public void Page_Load(object sender, EventArgs e)
RegisterAsyncTask(new PageAsyncTask(PageLoadAsync));
public async Task PageLoadAsync()
//perform your actions here, including calling async methods and awaiting their results
Task<string> downloadTask = new WebClient().DownloadStringTaskAsync("http://www.example.com");
TextBox1.Title = "We can do some actions while waiting for the task to complete";
TextBox2.Title = await downloadTask;
确保您的页面被标记为异步。
<%@ Page Language="C#" CodeBehind="Default.aspx.cs" Inherits="Default" Async="true" %>
请记住,上面的代码有点误导。 ASP.NET Web 窗体仍然基于 HTTP 请求/响应模型。在等待某些文件下载时,它实际上无法在客户端更新文本框的标题。相反,它会在 HTTP 响应中更新文本框的标题,一旦所有服务器端处理完成(包括您的异步任务),它就会将响应发送到客户端,此时他们将看到更新后的文本框的标题。
【讨论】:
谢谢,这似乎是一个很好的解决方案,但是如果我向我的方法添加参数,那么 PageAsyncTask 不接受它并给我“无法将任务转换为 System.Func”的错误。我需要参数,因为我必须在将内容发布到 API 之前对其进行处理。 @user65248 你没抓住重点。将参数直接放在调用异步方法的 PageLoadAsync 方法中。不需要实际将参数传递给 PageLoadAsync。 我确实设法通过制作一个像这样的新 Func以上是关于.net 中page 类的主要内容,如果未能解决你的问题,请参考以下文章