<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    blogjava's web log

    blogjava's web log
    ...

    【筆記】關(guān)于ViewState截獲移動到底部的問題

    關(guān)于把asp.net中ViewState 移動到頁面底部的好處,這個都不需要說了。
    1.更容易被搜索引擎收錄。
    2.頁面速度好像也有所提高.

    但當頁面又GridView 排序和分頁將出現(xiàn)問題。????
    思考中。
    看看有沒有什么辦法可以解決!


    關(guān)于asp.net怎么把ViewState移動頁面底部,給段代碼大家參考。
    1.新建個HttpModule 代碼如下。
    2.
    //在web.config插入下面?modules

    ??
    <httpModules>
    ???????
    <add?name="ViewstateModule"?type="blogjava.Net.ViewstateModule"?/>
    ????
    </httpModules>
    ?
    </system.web>
    他的原理就是在請求是aspx頁面得時候,的到請求得數(shù)據(jù)(網(wǎng)頁得源代碼)再根據(jù)網(wǎng)頁源代碼用字符串查找方式查找"
    input?type=\"hidden\"?name=\"__VIEWSTATE\ 再把他移動到底部??锤采w得Write 方法就一目了然了。


    #region?Using

    using?System;
    using?System.IO;
    using?System.Web;
    using?System.Text;
    using?System.Text.RegularExpressions;
    using?System.Web.UI;

    #endregion
    namespace Blogjava.Net
    {
    ????
    ///?<summary>
    ????
    ///?Removes?whitespace?from?the?webpage.
    ????
    ///?</summary>
    ????public?class?ViewstateModule?:?IHttpModule
    ????{

    ????????
    #region?IHttpModule?Members

    ????????
    void?IHttpModule.Dispose()
    ????????{
    ????????????
    //?Nothing?to?dispose;?
    ????????}

    ????????
    void?IHttpModule.Init(HttpApplication?context)
    ????????{
    ????????????context.BeginRequest?
    +=?new?EventHandler(context_BeginRequest);
    ????????}

    ????????
    #endregion

    ????????
    void?context_BeginRequest(object?sender,?EventArgs?e)
    ????????{
    ????????????HttpApplication?app?
    =?sender?as?HttpApplication;
    ??????????

    ????????????????
    if?(app.Request.Url.OriginalString.Contains(".aspx"))
    ????????????????{
    ????????????????????app.Response.Filter?
    =?new?ViewstateFilter(app.Response.Filter);

    ????????????????}
    ????????}

    ????????
    #region?Stream?filter

    ????????
    private?class?ViewstateFilter?:?Stream
    ????????{
    ????????????
    public?ViewstateFilter(Stream?sink)
    ????????????{
    ????????????????_sink?
    =?sink;
    ????????????}

    ????????????
    private?Stream?_sink;

    ????????????
    #region?Properites

    ????????????
    public?override?bool?CanRead
    ????????????{
    ????????????????
    get?{?return?true;?}
    ????????????}

    ????????????
    public?override?bool?CanSeek
    ????????????{
    ????????????????
    get?{?return?true;?}
    ????????????}

    ????????????
    public?override?bool?CanWrite
    ????????????{
    ????????????????
    get?{?return?true;?}
    ????????????}

    ????????????
    public?override?void?Flush()
    ????????????{
    ????????????????_sink.Flush();
    ????????????}

    ????????????
    public?override?long?Length
    ????????????{
    ????????????????
    get?{?return?0;?}
    ????????????}

    ????????????
    private?long?_position;
    ????????????
    public?override?long?Position
    ????????????{
    ????????????????
    get?{?return?_position;?}
    ????????????????
    set?{?_position?=?value;?}
    ????????????}

    ????????????
    #endregion

    ????????????
    #region?Methods

    ????????????
    public?override?int?Read(byte[]?buffer,?int?offset,?int?count)
    ????????????{
    ????????????????
    return?_sink.Read(buffer,?offset,?count);
    ????????????}

    ????????????
    public?override?long?Seek(long?offset,?SeekOrigin?origin)
    ????????????{
    ????????????????
    return?_sink.Seek(offset,?origin);
    ????????????}

    ????????????
    public?override?void?SetLength(long?value)
    ????????????{
    ????????????????_sink.SetLength(value);
    ????????????}

    ????????????
    public?override?void?Close()
    ????????????{
    ????????????????_sink.Close();
    ????????????}

    ????????????
    public?override?void?Write(byte[]?buffer,?int?offset,?int?count)
    ????????????{
    ????????????????
    byte[]?data?=?new?byte[count];
    ????????????????Buffer.BlockCopy(buffer,?offset,?data,?
    0,?count);
    ????????????????
    string?html?=?System.Text.Encoding.Default.GetString(buffer);

    ????????????????
    int?startPoint?=?html.IndexOf("<input?type=\"hidden\"?name=\"__VIEWSTATE\"");
    ????????????????
    if?(startPoint?>=?0)
    ????????????????{
    ????????????????????
    int?endPoint?=?html.IndexOf("/>",?startPoint)?+?2;
    ????????????????????
    string?viewstateInput?=?html.Substring(startPoint,?endPoint?-?startPoint);
    ????????????????????html?
    =?html.Remove(startPoint,?endPoint?-?startPoint);
    ????????????????????
    int?formEndStart?=?html.IndexOf("</form>")?-?1;
    ????????????????????
    if?(formEndStart?>=?0)
    ????????????????????{
    ????????????????????????html?
    =?html.Insert(formEndStart,?viewstateInput);
    ????????????????????}

    ????????????????}
    ????????????????
    byte[]?outdata?=?System.Text.Encoding.Default.GetBytes(html);
    ????????????????_sink.Write(outdata,?
    0,?outdata.GetLength(0));

    ????????????}
    ????????????
    #endregion

    ????????}

    ????????
    #endregion

    ????}
    }

    ?參考:http://www.hanselman.com/blog/ZippingCompressingViewStateInASPNET.aspx

    //end

    posted on 2006-12-16 10:33 record java and net 閱讀(443) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    常用鏈接

    留言簿(44)

    新聞檔案

    2.動態(tài)語言

    3.工具箱

    9.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲a∨无码精品色午夜| 好男人视频社区精品免费| 国产天堂亚洲精品| 亚洲国产成人超福利久久精品| 亚洲第一成人影院| 成人啪精品视频免费网站| 最近免费中文字幕大全免费| a级毛片免费完整视频| 免费激情网站国产高清第一页| 亚洲深深色噜噜狠狠网站| 亚洲精品人成电影网| 国产亚洲精品自在久久| 亚洲精品尤物yw在线影院| 国产一级淫片a免费播放口之| 无遮免费网站在线入口| 最近中文字幕大全中文字幕免费| a毛片免费全部在线播放**| 一本岛v免费不卡一二三区| 国产亚洲情侣久久精品| 亚洲第一街区偷拍街拍| 亚洲熟妇av午夜无码不卡 | 91在线视频免费观看| 国产亚洲精品国产福利在线观看 | 在线观看永久免费| 三年片在线观看免费观看大全一 | 浮力影院亚洲国产第一页| 亚洲av高清在线观看一区二区 | 亚洲狠狠成人综合网| 亚洲一区电影在线观看| 亚洲理论片在线观看| 亚洲国产综合自在线另类| 亚洲经典在线中文字幕| 亚洲大香人伊一本线| 亚洲一区中文字幕在线电影网| 亚洲国产精品日韩在线观看| 亚洲不卡视频在线观看| 亚洲日本VA午夜在线影院| 国产成人va亚洲电影| 国产精品福利在线观看免费不卡| 中国国语毛片免费观看视频| 两个人看的www高清免费观看|