在進行 ASP.NET 開發時,有時候需要對頁面輸出的最終 HTML 源代碼進行控制,是頁面的 render 方法中很容易實現這個功能。下面就是一個實現的方法,注釋都在代碼中。
?
- <%@?Page?Language="C#"?%>??
- <%@?Import?Namespace="System.IO"?%>??
- <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">??
- <script?runat="server">??
- ??protected?override?void?Render(HtmlTextWriter?writer)??
- ??{??
- ????string?content?=?string.Empty;??
- ????StringWriter?stringWriter?=?new?StringWriter();??
- ????HtmlTextWriter?htmlWriter?=?new?HtmlTextWriter(stringWriter);??
- ????try??
- ????{??
- ??????//?將當前頁面的內容呈現到臨時的?HtmlTextWriter?對象中??
- ??????base.Render(htmlWriter);??
- ??????htmlWriter.Close();??
- ??????//?得到當前頁面的全部內容??
- ??????content?=?stringWriter.ToString();??
- ??????//?替換頁面中的部分內容??
- ??????string?newContent?=?content.Replace("[mxh]",?"孟憲會");??
- ??????//?將新頁面的內容顯示出來??
- ??????writer.Write(newContent);??
- ????}??
- ????catch?{?}??
- ????finally??
- ????{??
- ??????stringWriter.Dispose();??
- ??????htmlWriter.Close();??
- ??????htmlWriter.Dispose();??
- ????}??
- ??}??
- </script>??
- <html?xmlns="http://www.w3.org/1999/xhtml">??
- <head?id="Head1"?runat="server">??
- ??<title>孟憲會之替換頁面呈現內容測試</title>??
- </head>??
- <body>??
- ??<form?id="form1"?runat="server">??
- ??[mxh]??
- ??</form>??
- </body>??
- </html> ?
?