主頁 > 知識庫 > asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼

asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼

熱門標簽:保山電話外呼管理系統(tǒng)怎么用 太原外呼電銷機器人費用 蘇州銷售外呼系統(tǒng)預算 電話機器人廣告話術 淘寶地圖標注如何做 使用智能電話機器人違法嗎 朝陽市地圖標注 東莞語音電銷機器人排名 外呼系統(tǒng)用員工身份證
看著自己網(wǎng)站編譯之后的源文件,里面很多亂七八糟的東西,看了就覺得不舒服
復制代碼 代碼如下:
input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE3NjgxMzM0MDIPZBYCZg9kFgIC……

還有form源文件,一看就知道是asp.net的頁面
復制代碼 代碼如下:
form name="form1" method="post" action="smartDropDownList.aspx" id="form1">

知道腳本之家也是ASP.NET做的,就好奇地看看博客園的首頁源文件,發(fā)現(xiàn)沒有這些玩意,后來問了下別人,

網(wǎng)上也找了點資料;

總結了一下自己的想法:
1、如果你的一個頁面沒有什么復雜的數(shù)據(jù)交互,例如登錄你可以改用成ajax的登錄,單條新聞界面也可以去掉,如果有留言也可以采用ajax的方式去完成!

2、后臺管理頁面,數(shù)據(jù)交互性一般都有點復雜,我就覺得沒有什么必要去掉哪些東西了,反正后臺對SEO沒有任何影響,我好奇地看了看博客園的后臺也是有的
不廢話了,直接貼代碼,在你的頁面代碼中加上如下函數(shù)
復制代碼 代碼如下:

protected override void Render(HtmlTextWriter writer)
{
System.IO.StringWriter html = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html);
base.Render(tw);
string Temp = html.ToString();
string s1 = string.Empty, s2 = string.Empty, s3 = string.Empty, s4 = string.Empty, s5 = string.Empty, s6 = string.Empty;
int i = 0;
int j = 0;
i = Temp.IndexOf("form");
if (i > 0)
{
j = Temp.IndexOf(">", i);
s1 = Temp.Substring(0, i);
s2 = Temp.Substring(j + 1, Temp.Length - j - 1);
}
i = s2.IndexOf("input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\"");
if (i > 0)
{
j = s2.IndexOf(">", i);
s3 = s2.Substring(0, i);
s4 = s2.Substring(j + 1, s2.Length - j - 1);
}
i = s4.IndexOf("input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\"");
if (i > 0)
{
j = s4.IndexOf(">", i);
s5 = s4.Substring(0, i);
s6 = s4.Substring(j + 1, s4.Length - j - 1);
Temp = s1 + s3 + s5 + s6;
}
else
{
Temp = s1 + s3 + s4;
}
Temp = Temp.Replace("/form>", "");
Temp = Temp.Replace("\r\n", "");
tw.Close();
Response.Write(Temp);
}

其實就是重寫了Render方法,然后截取html源文件就能解決了,更具自己的情況去使用,覺得好用就用下!
如果你覺得簡單,或者不屑,不要噴,有問題請拍磚,謝謝!

2.查詢老外的解決辦法,是將代碼移動到尾部,但發(fā)現(xiàn)部分網(wǎng)頁報錯, 之后發(fā)現(xiàn)把網(wǎng)頁的enableviewatate=false 明顯的viewstate 代碼減少。

  原因總結:
  (1)、這是由于net記錄控件視圖狀態(tài)的. asp.net服務器控件默認都記錄的.
  如果你確定一個控件是不需要記錄控件狀態(tài),可以給他的EnableViewState賦值false禁用.
  個人總結:
  關閉視圖也不是最終解決辦法,只會減少,最徹底的辦法就是把form表單做成普通的html標簽。
  省去runat="server"就可以。程序盡管重要,但如果做出來的程序沒有什么效果,是沒有意義的,
  網(wǎng)友見解:
  視圖狀態(tài),這可不是什么無用的代碼。你使用服務器控件,為什么在每一次提交后,會將信息以控件對象的方式讀取到呢?都是因為有了視圖狀態(tài)。

  視圖狀態(tài)是可以禁用的,不過只使用EnableViewState=false是不徹底的,你還會在頁面中看到__VIEWSTATE的隱藏域。這是因為就算禁用了他,還是會有一個服務器控件在那里使用,就是from runat="server",如果你將from編程普通html標簽,那么頁面就干凈了。

  當然,禁用視圖狀態(tài)后,是會提升系統(tǒng)效率的,因為程序不會再去分析視圖狀態(tài)中值,再為控件對象初始化了。這樣做對于網(wǎng)站來說是高效的,但如果是做引用程序,那就有點自找麻煩了。
您可能感興趣的文章:
  • asp.net 生成靜態(tài)時的過濾viewstate的實現(xiàn)方法
  • asp.net 去除viewstate
  • asp.net 禁用viewstate在web.config里
  • asp.net viewstate 回發(fā)機制
  • 使用正則Regex來移除網(wǎng)頁的EnableViewState實現(xiàn)思路及代碼
  • 狀態(tài)保存機制之ViewState概述及應用
  • 禁止ViewState的3種解決方法
  • viewstate和datatable動態(tài)錄入數(shù)據(jù)示例
  • asp.net中ViewState的用法詳解
  • ASP.NET中控件的EnableViewState屬性及徹底禁用

標簽:運城 阿里 洛陽 呼倫貝爾 綏化 克拉瑪依 西藏 潛江

巨人網(wǎng)絡通訊聲明:本文標題《asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼》,本文關鍵詞  asp.net,生成,靜態(tài),后,冗余,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼》相關的同類信息!
  • 本頁收集關于asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼的相關信息資訊供網(wǎng)民參考!
  • 推薦文章