5、Strongly-typed access to cross-page postback controls强类型方式访问跨页面PostBack控件。
这一条比其他任何一点都更加involved(“包含”?不像,应该是“不常用”的意思吧),但是十分有用。一个页面提交信息到另一个页面,在这里ASP.NET 2.0介绍了跨页面提交的概念。按钮提交数据到一个页面,把按钮的PostBackUrl属性设置为目标页面的名字,就是通过这种方式(实现跨页面提交)。
一般情况下,可以通过PreviousPage.FindControl("ControlID")方式来访问提交的数据。然而,这需要看情况(requires a cast),如果你需要访问先前页面中的属性(经常需要这么做)。如果在发起回传操作的页面后台代码中增加一个公有属性,那么你可以通过在本次回传的目标页中增加PreviousPageType directive,以强类型的方式来访问这些公有属性。如果你还没有尝试过,这听起来或许有点混淆,所以允许我多解释一些。
假如有一个页面叫做Default.aspx,同时向外提供一个公有属性,来返回页面中定义的TextBox的值。数据所要提交到的页面(姑且叫做SearchResult.aspx吧)就能够以强类型的方式访问到这些属性,只需要在SearchResult.aspx页面顶端增加PreviousPageType directive:
通过添加这个directive,SearchResult.aspx中的代码就可以以强类型的方式访问Default.aspx中定义的TextBox。在以下的示例中,假设Default.aspx中定义的属性名是SearchTextBox.
很明显,这行代码只有在上一页(Previous Page)是Default.aspx的情况下才能正常运行。同时PreviousPageType 也有一个TypeName属性,根据这个属性,你可以定义一个基类型,这样你可以让一个或者多个页面获取这个基类型的值来支持多页面。你可以从这里了解更多关于PreviousPageType。
(这段代码不好翻译,免于出错,仅给出部分意思,望达人补充,原文如下:This code obviously only works if the previous page is Default.aspx. PreviousPageType also has a TypeName property as well where you could define a base type that one or more pages derive from to make this technique work with multiple pages. You can learn more about PreviousPageType here.)
6、强类型方式访问MasterPages控件。
PreviousPageType directive 不是唯一一种提供强类型访问控件的方式。如果想通过强类型的方式访问定义在MasterPages中的控件,你可以在要显示的页面中增加MasterType directive(记住,MasterType directive和PreviousPageType directive一样,也可以定义一个类型名)
这样,你就能在content page中按以下代码方式访问目标master page中的属性:
你也可以找到一些关于使用master page的技巧,包括在我先前的一篇blog中所提到的“共享master page访问IIS虚拟目录”等。
7、验证组 Validation groups
你有这样一个页面,包含几个控件和几个按钮。当点击其中一个按钮的时候,你希望evaluate指定的按钮(evaluate原意:评估,得到……的值;这里的意思:得到按钮的值),而不是页面中所有的按钮。在ASP.NET 1.1 中,如果不去resorting to some hack code(怎么译?)的话,就很难处理这样的问题。ASP.NET 2.0给所有的验证控件和按钮(Button,LinkButton)增加了一个ValidationGroup属性,可以很容易地解决问题。如果在页面顶端有一个TextBox和一个Button控件,紧挨着TextBox是一个RequiredFieldValidator控件,把button和RequiredFieldValidator控件上的ValidationGroup属性值设置为相同的值,当点击按钮的时候,你就能fire(“激活”?不解~)一个验证。当点击按钮的时候,任何定义在ValidationGroup之外的验证都被忽略了。这里有一个示例:
8、编码的时候查找控件或者变量的名字。
这个技巧和Asp.net没有直接关系,与VS.net反而更有关系。对你们这些只记住了控件或变量名的前几个字母而没有记住全名的人来说,这个技巧确实十分有用。这让我又有机会去提起来自microsoft下载到的两个伟大的下载。第一,在输入控件名的前几个字母的时候,按下CTRL+SPACEBAR,VS.net将会跳出一个匹配项的简短列表。的确,这将更加容易地找到控件或者变量的名字。(译者注:怎么没有第二了?)对于感兴趣的朋友,微软提供整套完整的VS.net快捷键下载:c# Version here和VB.NET Version here
转:http://www.netcet.cn/content.aspx?id=042577964576