<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人片天堂免费观看高清| 亚洲人成在线观看| 免费一区二区无码东京热| 亚洲国产精品一区第二页| 免费在线中文日本| 亚洲AV无码成人精品区天堂 | 24小时免费看片| 亚洲第一页在线视频| 美女视频黄的全免费视频网站| 亚洲一级在线观看| 日韩高清在线免费看| 看免费毛片天天看| 不卡精品国产_亚洲人成在线| 一个人免费观看日本www视频 | 亚洲今日精彩视频| 成年免费大片黄在线观看岛国| 亚洲免费福利在线视频| 免费看美女让人桶尿口| 污污免费在线观看| 亚洲av无码无在线观看红杏| 五月婷婷在线免费观看| 亚洲熟女乱色一区二区三区| 免费一级毛片不卡在线播放| 国产视频精品免费视频| 亚洲美女视频网站| 免费一级成人毛片| 8x成人永久免费视频| 亚洲乱码无人区卡1卡2卡3| 国产一级特黄高清免费大片| 青柠影视在线观看免费高清| 亚洲制服丝袜第一页| 亚洲国产黄在线观看| 一级做a爰全过程免费视频| 亚洲色偷偷偷综合网| 亚洲中文字幕无码一久久区| 国产成人免费午夜在线观看| 深夜特黄a级毛片免费播放| 亚洲精品无码不卡| 免费一区二区三区四区五区|