Asp.net
完全刪除特定頁面的 ViewState
我有一個網站,其中包含一些不需要任何回發功能的頁面。它們只是顯示靜態HTML,甚至沒有任何關聯程式碼。但是,由於母版頁有一個
<form runat="server">包含所有 s 的標籤ContentPlaceHolder,因此生成的 HTML 始終包含ViewState欄位,即:<input type="hidden" id="__VIEWSTATE" value="/wEPDwUKMjEwNDQyMTMxM2Rk0XhpfvawD3g+fsmZqmeRoPnb9kI=" />**編輯:**我在頁面級別嘗試了兩種設置變體,
EnableViewState但一點運氣都沒有:<%@ Page Language="C#" EnableViewState="false" %> <%@ Page Language="C#" EnableViewState="true" %>我意識到,在解密時,該
input欄位的值對應於<form>我無法刪除的標籤,因為它位於我的母版頁上。但是,我仍然想刪除僅顯示靜態 HTML 的頁面的 ViewState 欄位。可能嗎?
您可以覆蓋 Render 並使用正則表達式將其剝離。
按要求提供樣品。(注意:這樣做的成本幾乎肯定會大於任何可能的好處!)
[編輯:此功能還有助於通過更改 MIMEType 和文件副檔名來剝離所有隱藏的輸入框,以便將 HTML 輸出用作 word doc]
protected override void Render(HtmlTextWriter output) { StringWriter stringWriter = new StringWriter(); HtmlTextWriter textWriter = new HtmlTextWriter(stringWriter); base.Render(textWriter); textWriter.Close(); string strOutput = stringWriter.GetStringBuilder().ToString(); strOutput = Regex.Replace(strOutput, "<input[^>]*id=\"__VIEWSTATE\"[^>]*>", "", RegexOptions.Singleline); output.Write(strOutput); }