<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)于把a(bǔ)sp.net中ViewState 移動到頁面底部的好處,這個都不需要說了。
    1.更容易被搜索引擎收錄。
    2.頁面速度好像也有所提高.

    但當(dāng)頁面又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\ 再把他移動到底部。看覆蓋得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 閱讀(445) 評論(0)  編輯  收藏


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


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

    導(dǎo)航

    常用鏈接

    留言簿(44)

    新聞檔案

    2.動態(tài)語言

    3.工具箱

    9.文檔教程

    友情鏈接

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲一区二区三区无码国产| 亚洲熟妇av一区二区三区| 亚洲精品无码久久毛片波多野吉衣| v片免费在线观看| 亚洲一区二区视频在线观看| 猫咪免费人成在线网站| 又爽又高潮的BB视频免费看| 日韩在线视频线视频免费网站| 亚洲性日韩精品一区二区三区| 人妖系列免费网站观看| 国产亚洲精品资源在线26u| 中文在线免费看视频| 亚洲成亚洲乱码一二三四区软件| 国产精品免费观看调教网| 亚洲永久中文字幕在线| 大学生一级毛片免费看| 亚洲av纯肉无码精品动漫| 免费一级毛片女人图片| 一本久久A久久免费精品不卡| 自拍偷自拍亚洲精品情侣| 久久国产精品一区免费下载| 91亚洲国产成人久久精品| 毛片免费在线播放| 日日摸日日碰夜夜爽亚洲| 国产国拍亚洲精品福利| 免费在线看黄网站| 亚洲国产激情在线一区| 四虎影视永久免费观看| 国产无遮挡裸体免费视频在线观看 | 亚洲综合亚洲综合网成人| a级毛片毛片免费观看永久| 久久久久亚洲AV无码永不| 最新中文字幕电影免费观看| 菠萝菠萝蜜在线免费视频| 亚洲A∨无码无在线观看| 无码日韩精品一区二区免费| 一区二区3区免费视频| 亚洲国产美女精品久久久久| 人人狠狠综合久久亚洲高清| 99re6在线精品视频免费播放| 亚洲国产美女精品久久久|