7.2 TextBox的自动完成(AutoCompleteType)改良
TextBox控件有什么新鲜内容?嗯!有个看似很小但却常带来困扰的小“改良”,就是“自动完成”(AutoComplete)。何谓自动完成呢?也就是TextBox会记忆用户曾经输入过的文字,当下次再输入时就会自动提示相关字词,最常见的是用户登录网站时就会自动带出帐号密码。
这个功能在最早被发明时大家觉得很方便很好用,但随着信息安全意识的加强,这个功能有时不但不讨人喜欢,反而有点令人厌恶,为什么呢?现在无论是在家中、网吧还是公司,多人共享一台计算机的机会很多,而也是由于TextBox的自动完成在作祟的缘故,他人要看你的E-mail甚至假借您的帐号登录网页并非难事,只要在TextBox中选取你的帐号后,密码通常会一并自动带出。
关于这个恼人的问题,我接连被朋友问道该如何解决。在ASP.NET 2.0的TextBox控件内置的AutoCompleteType属性可以轻易解决这个问题,只要将TextBox的AutoCompleteType设置为“Disable”后,自动完成提示便完全不会出现了。
范例7-4 设置TextBox控件AutoCompleteType自动完成属性
请参考TextBoxControl.asp程序,测试步骤如下:
使用TextBox默认的自动完成
一般而言,各位设计的网页登录画面如图7-6所示。只要TextBox曾经输入过数据,下次在TextBox控件中双击就会出现相关文字,选取某个用户帐号后,密码也会被一并带出,安全性令人担忧。

图7-6 TextBox自动完成(默认)
修改TextBox的自动完成功能
若您不想TextBox自动带出任何信息,可以将程序中TextBox控件的AutoCompleteType属性由默认的“None”改为“Disable”后,这样便无法执行任何的自动完成功能,也不会有任何文字自动显示,一举解决了原本恼人的安全性问题。取消自动完成后的HTML程序代码如下:
...略
<asp:Label ID="capUserName" runat="server" Text="帐号:"></asp:Label>
<asp:TextBox ID="txtUserName" runat="server" AutoCompleteType="Disabled" Width="150px"></asp:TextBox><br />
<asp:Label ID="capPassword" runat="server" Text="密码:"></asp:Label>
<asp:TextBox ID="txtPasswors" runat="server" AutoCompleteType="Disabled" TextMode="Password" Width="150px"></asp:TextBox><br />
<asp:Button ID="btnLogin" runat="server" Text="登录" />
...略
完成后请执行画面,当点击TextBox时将不会自动带出任何信息,因为其自动完成功能已被取消了。
AutoCompleteType是一个列举类型,其所有支持项目如下:
l BusinessCity
l BusinessCountryRegion
l BusinessFax
l BusinessPhone
l BusinessState
l BusinessStreetAddress
l BusinessUrl
l BusinessZipCode
l Cellular
l Company
l Department
l Disabled
l DisplayName
l Email
l FirstName
l Gender
l HomeCity
l HomeCountryRegion
l HomeFax
l Homepage
l HomePhone
l HomeState
l HomeStreetAddress
l HomeZipCode
l JobTitle
l LastName
l MiddleName
l None
l Notes
l Office
l Pager
l Search
自动完成目前只有要或不要两种,但大家都知道这不是好的二分法,因为中间理应存在其他的选择,而AutoCompleteType也有其成员选择,如您想让E-mail自动完成就选择“E-mail”,以此类推。
Web网页应用程序通过这个设置可强制所有用户都套用自动完成,自动完成功能设置在IE浏览器中什么地方?请选择【工具】→【选项】→【内容】→【自动完成】就可以调出如图7-7所示的自动完成设置画面,这个设置针对用户一个人有用。

图7-7 设定IE浏览器的自动完成功能
若您还想知道自动完成更多的信息,可以参考“Using AutoComplete in HTML Forms”这篇文章,网址如下:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/forms/autocomplete_ovr.asp






