最近有些忙,终于把asp.net的 viewstate优化(二) 这里出来。前面的asp.net程序员与seo – viewstate优化( 一 )可能看起来不是很明白,那么我这篇翻译后给大家留个原代码,可以下载下来看看。下面内容接上节开始:
我们的网页适配器在这个form的底部添加一个隐藏字段__seoviewstate来放实际视图状态数据,唯一的局限性是你不能直接在asp.net form 内的表达式来表现它。然而,这种限制可以很容易地避免把表达的预留位置控制或内部另一个控制。深入解释这一限制看看这篇文章。
让我们通过一个例子来看适配器起的作用. 下面的asp.net page:
以下为引用的内容:
<%@ page language="c#"autoeventwireup="true"codebehind="default.aspx.cs"inherits="seoviewstateadaptertest._default" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<formid="form1"runat="server">
enter a message: <br/>
<asp:textboxid="txtmessage"runat="server"></asp:textbox><br/>
<asp:buttonid="bsavemessage"runat="server"text="save message"onclick="bsavemessage_click"/><br/>
<asp:labelid="lmessage"runat="server"></asp:label><br/>
<p>page generated at <asp:placeholderid="placeholder1"runat="server"><%= datetime.now.tostring("hh:mm dd/mm/yyy") %></asp:placeholder>
</form>
</body>
</html>
关联的cs代码:
以下为引用的内容:
usingsystem;
usingsystem.collections.generic;
usingsystem.web;
usingsystem.web.ui;
usingsystem.web.ui.webcontrols;
namespace seoviewstateadaptertest
{
publicpartialclass _default :system.web.ui.page
{
protectedvoid page_load(object sender, eventargs e)
{
if(!page.ispostback){
viewstate["previousmessage"]= txtmessage.text;
}
}
protectedvoid bsavemessage_click(object sender, eventargs e)
{
lmessage.text=string.format("the current message is ‘{0}’. the previous message was ‘{1}’", txtmessage.text, (string)viewstate["previousmessage"]);
viewstate["previousmessage"]= txtmessage.text;
}
}
}