技巧和诀窍:在ASP.NET AJAX UpdatePanel中实现对后退/前进按钮的支持

2006-09-15 by 开心就好

【原文地址】Tip/Trick: Enabling Back/Forward-Button Support for ASP.NET AJAX UpdatePanel
【原文发表日期】Thursday, September 14, 2006 12:25 PM

Nikhil最近写了一个好帖子,是关于一个叫做HistoryControl的支持AJAX的新ASP.NET 控件的。把它加到页面上后,允许开发人员用编程手段往浏览器的历史记录里添加逻辑视图(logical view)。这将使得支持AJAX的网站更加有用,而且遵循传统web应用所遵循的标准的前进/后退的导航惯例。

譬如,通过Nikhil的HistoryControl,开发人员可以编写类似下面这样的编码来响应一个列表的选择变动,并且把列表选择当作标识符添加到浏览器的历史记录中去:

``{=html}private void ``{=html}``{=html}ContentList_SelectedIndexChanged(``{=html}``{=html}object ``{=html}``{=html}sender, EventArgs e) {    history.AddEntry(contentList.SelectedIndex.ToString()``{=html}``{=html}; ``{=html}``{=html}}``{=html}

你一旦往历史控件里添加新项后,浏览器中的后退/前进按钮就被激活了。Nikhil的历史控件提供了一个Navigate事件,当你在浏览器里按后退/前进按钮时,这个事件就会被触发,同时它在事件处理函数的参数里提供了早先在把逻辑视图添加进浏览器历史记录时所用的那个标识符。然后你就可以使用这个标识符来把页面回复到跟这个历史记录相对应的页面状态了:

<font color="blue">private void </font><font color="black">HistoryControl_Navigate(</font><font color="blue">object </font><font color="black">sender, HistoryEventArgs e) {

</font><font color="blue">int </font><font color="black">selectedIndex </font><font color="blue"></font><font color="maroon">0</font><font color="blue">;

if </font><font color="black">(String.IsNullOrEmpty(e.Identifier) </font><font color="blue">== false</font><font color="black">) {
        selectedIndex </font><font color="blue"></font><font color="black">Int32.Parse(e.Identifier)</font><font color="blue">;
</font><font color="black">}

</font><font color="darkgreen">// Update the content being displayed in the page
</font><font color="black">contentList.SelectedIndex </font><font color="blue"></font><font color="black">selectedIndex</font><font color="blue">;

</font><font color="darkgreen">// Mark the update panels as needing an update
</font><font color="black">mainUpdatePanel.Update()</font><font color="blue">;
</font><font color="black">}</font>

这样你的用户在使用AJAX应用时也能使用前进/后退按钮来作导航了。你可以在这里下载Nikhil的历史控件的编码,开始用在你的项目里

希望本文对你有所帮助,

Scott

::: postfoot

标签:[ASP.NET](http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx){rel="tag"}, [.NET](http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx){rel="tag"}, [Atlas](http://weblogs.asp.net/scottgu/archive/tags/Atlas/default.aspx){rel="tag"}, [Tips and Tricks](http://weblogs.asp.net/scottgu/archive/tags/Tips+and+Tricks/default.aspx){rel="tag"}

(思归译) :::


Comments