我需要在几个ASPX代码隐藏文件中测试一个条件,在某些情况下,我想完全绕过正常的页面加载过程,以便不加载相应的ASPX页面。 Intead,我想向使用代码隐藏方法编写的浏览器发送自定义响应。
有没有人知道从哪里开始 - 覆盖页面生命周期中的哪些方法以及确保在正常ASPX页面内容被抑制时将自定义Response.Write发送到浏览器的最佳技术?
感谢。
答案 0 :(得分:7)
可能是最简单的方法 - 使用Page_Load()
。
protected void Page_Load(object sender, EventArgs e)
{
bool customResponse = true;
if (customResponse)
{
Response.Write("I am sending a custom response");
Response.End(); //this is what keeps it from continuing on...
}
}
答案 1 :(得分:6)
我有同样的问题并以这种方式解决了。这是一个两步过程:首先调用HttpApplication.CompleteRequest()并退出处理。接下来重写Render(),以便不调用基本方法。然后示例代码变为:
bool customResponse = true; protected void Page_Load(object sender, EventArgs e) { if (customResponse) { Response.Write("I am sending a custom response"); this.Context.ApplicationInstance.CompleteRequest(); return; // Bypass normal processing. } // Normal processing... } protected override void Render(HtmlTextWriter writer) { if (!customResponse) base.Render(writer); // Then write the page as usual. }
答案 2 :(得分:0)
这真的取决于你的回复,是发布的表单字段,身份验证信息等......? 使用Page_Load显示的方法将起作用,但页面生命周期中该点之前的任何内容也将执行。