Seb*_*son 6 asp.net viewstate webforms
将ViewState移动到页面底部的最新和最好的方法是什么?
这可以在IHttpHandler中完成,可以在web.config中指定拦截对"*.aspx"的请求吗?
<httpHandlers>
<add verb="*" path="*.aspx" type="MyApp.OptimizedPageHandler" />
<httpHandlers>
Run Code Online (Sandbox Code Playgroud)
其他选择是,这可以在IHttpModule中完成,但这不是高效的,因为它将拦截所有请求.
它也可以在一个派生自Page或MasterPage类的类中完成,但这不是模块化的.
对此有任何性能损失吗?
经过一些研究后,我整理了这篇博文。
我通过创建HttpModule并应用Response Filter解决了该问题,该过滤器修改页面的输出并将 ViewState 移动到表单的底部。
public class ViewStateSeoHttpModule : IHttpModule {
public void Init(HttpApplication context) {
context.BeginRequest += new EventHandler(BeginRequest);
}
private void BeginRequest(object sender, EventArgs e) {
HttpApplication application = sender as HttpApplication;
bool isAspNetPageRequest = GetIsAspNetPageRequest(application);
if(isAspNetPageRequest) {
application.Context.Response.Filter =
new ViewStateSeoFilter(application.Context.Response.Filter);
}
}
private bool GetIsAspNetPageRequest(HttpApplication application) {
bool isAspNetPageRequest = application.Context.Handler is System.Web.UI.Page;
return isAspNetPageRequest;
}
// [...]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3833 次 |
| 最近记录: |