正在从代码隐藏中将页面异步模式设置为true
本文关键字:异步 模式 设置 true 代码 隐藏 | 更新日期: 2023-09-27 18:22:19
是否可以在我的代码隐藏文件中设置页面指令的异步模式。
我没有办法直接修改<%@Page %>
属性,也很难在代码后面找到实现这一点的方法。
我尝试在Page_Load方法中添加Page.AsyncMode = true
,但它返回以下错误:
由于其保护级别而无法访问
有办法做到这一点吗?无法直接修改母版页?
否,您不能在代码后面更改页面的异步模式。异步页面实现IHttpAsyncHandler
接口,在ASP.NET编译.aspx文件并运行代码后,无法更改页面实现的接口。
设置Page.AsyncMode
属性不会更改异步模式。它的目的是让页面上的控件知道页面是否在异步模式下运行,因此篡改属性可能会导致控件出现故障。
我猜您正试图从母版页访问此属性。但根据文献记载,这个性质是protected bool AsyncMode { get; set; }
。这意味着它可以从声明它的类中访问,也可以从声明该成员的类派生的任何类中访问。
此属性是在System.Web.UI.Page
中声明的,并且可以在它和从它派生的任何类中访问。MasterPage
不是从Page
派生的。这就是为什么你不能访问它。
您可以从您的页面轻松访问:
public partial class YourPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.AsyncMode = true;
}
}
因为您的MasterPage不是从页面继承的,所以您无法访问AsyncMode属性。
如果您绝对必须编辑MasterPage中的值,可以考虑在页面中添加一个名为"UpdateAsyncMode"的方法,并在MasterPage page_Load 中执行以下操作
protected void Page_Load(object sender, EventArgs e)
{
MyPageClass p = this.Page as MyPageClass ;
p.UpdateAsyncMode(true);
}
或者,如果这是一个需要更强大的东西,你可以为如下页面创建一个基类,并让你网站中的所有网页扩展该基类
public abstract class MyBasePage : System.Web.UI.Page
{
public void UpdateAsyncMode (bool b)
{
this.AsyncMode = b;
}
}