4.4 文本服务器控件
文本服务器控件是指专门实现文本显示的Web服务器控件,它们主要包括标签控件、静态文本控件、文本框控件和超链接文本控件。
4.4.1 Label控件
在Web应用中,希望显示的文本不能被用户更改,或者当触发事件时,某一段文本能够在运行时更改,则可以使用标签控件Label。Label控件最常用的Text属性用于设置要显示的文本内容。
开发人员可以非常方便地将标签控件拖放到页面,拖放到页面后,该页面将自动生成一段标签控件的声明代码,代码如下所示:
或
在以上代码中,声明了一个标签控件,并将这个标签控件的ID属性设置为默认值Label1。由于该控件是服务器端控件,所以在控件属性中包含runat="server"属性。该代码还将标签控件的文本初始化为“要显示的文本内容”,开发人员能够配置该属性进行不同文本内容的呈现。
同样,标签控件的属性能够在相应的.cs代码中初始化,代码如下所示:
以上代码在页面初始化时为Label1的文本属性设置为"Hello World"。
值得注意的是,对于Label标签,同样也可以显示HTML样式,代码如下所示:
上述代码中,Label1的文本属性被设置为一串HTML代码,当Label文本被呈现时,会以HTML效果显示。
4.4.2 Literal控件
Literal控件的工作方式类似于Label控件,用于在浏览器上显示在整个过程中不发生变化的文本,其控件定义的语法如下:
或
以上代码是定义Label标记的两种方式,属性ID定义该控件的标识为Label,Text属性表示控件要显示的文字,属性runat表示该控件是一个服务器控件。
除了前文介绍的基本属性外,Literal控件还有以下几个重要的属性。
● Text:获取或设置在Literal控件中显示的文本,该文本是可编辑的。
● Mode:设置Literal控件文本的显示方式。
Literal控件支持Mode属性,该属性用于指定控件对所添加标记的处理方式。可以将Mode属性设置为以下值:
● Transform,添加到控件中的任何标记都将进行转换,以适应请求浏览器的协议。如果想使用除HTML外的其他协议的移动设备呈现内容,此设置非常有用。
● PassThrough,添加到控件中的任何标记都将按原样呈现在浏览器中。
● Encode,添加到控件中的任何标记都将使用HtmlEncode方法进行编码,该方法将HTML编码转换为文本表示形式。当希望浏览器显示而不解释标记时,编码将很有用。编码对于安全也很有用,有助于防止在浏览器中执行恶意标记,显示来自不受信任源的字符串时推荐使用此设置。
下面的代码中将Literal的Mode属性值设为Encode,ASP.NET将会输出原样HTML编码,而不是把文本解释成HTML标记规定的格式。
运行程序后,浏览器中会显示“<b>新用户注册!<b>”。
4.4.3 TextBox控件
在Web开发中,Web应用程序通常需要和用户进行交互,例如用户注册、登录、发帖等,那么就需要文本框控件TextBox。TextBox控件是用得最多的控件之一,显示为文本框,可以用来显示数据或输入数据,该控件定义的语法如下:
或
TextBox控件除了所有控件都具有的基本属性之外,还有以下几个重要的属性。
● AutoPostBack:用于设置在文本修改后,是否自动回传到服务器。它有两个选项,true表示回传;False表示不回传,默认为false。
● Columns:获取或设置文本框的宽度(以字符为单位)。
● MaxLength:获取或设置文本框中最多允许的字符数。
● ReadOnly:获取或设置一个值,用于指示是否可以更改TextBox控件的内容。它有两个选项,true表示只读,不能修改;false表示可以修改。
● TextMode:用于设置文本的显示模式。
● Text:设置和读取TextBox中的文字。
● Row:属性用于获取或设置多行文本框中显示的行数,默认值为0,表示单行文本框。该属性在TextMode属性为MultiLine(多行文本框模式下)时才有效。
TextBox的众多属性中TextMode比较重要,在Visual Studio 2012中对该属性做了重大的改进,增加了13个选项,如表4-2所示。
表4-2 TextMode的选项
许多浏览器都支持自动完成功能,该功能可帮助用户根据以前输入的值向文本框中填充信息。自动完成的精确行为取决于浏览器。通常,浏览器根据文本框的name属性存储值。
任何同名的文本框(即使在不同页上)都将为用户提供相同的值。TextBox控件支持AutoCompleteType属性,该属性用于控制TextBox控件的自动完成功能。
TextBox控件的常用事件是TextChanged事件,当文字改变时引发此事件,可以编写事件处理代码做出响应。
默认情况下,TextChanged事件并不立刻导致页面回传,而是当下次发送窗体时在服务器代码中引发此事件。如果希望TextChanged事件即时回传,需将TextBox控件的AutoPostBack(自动回传)属性设置为True。
TextBox控件最常用的方法是Focus()方法,该方法派生于WebControl基类。Focus()方法可以将光标置于文本框中,准备接受用户的输入。用户不必移动鼠标就可以在窗体上输入信息。
4.4.4 HyperLink控件
超链接控件HyperLink相当于实现了HTML代码中的“<a href="…"></a>”标记的效果,当然,超链接控件有自己的特点,当拖动一个超链接控件到页面时,系统会自动生成控件声明代码,代码如下所示:
或
以上代码声明了一个超链接控件,相对于HTML代码形式,HyperLink可以通过传递指定的参数来访问不同的页面。当触发了一个事件后,超链接的属性可以被改变。HyperLink控件除了基本属性之外,还有以下几个重要的属性。
● Text:用于设置或获取HyperLink控件的文本内容。
● NavigateURL:用设置或获取单击HyperLink控件时链接到的URL。
● Target:用于设置或获取目标链接要显示的位置,有如下的值可选,_blank表示在新窗口中显示目标链接的页面;_parent表示将目标链接的页面显示到上一个框架集父级中;_self表示将目标链接的页面显示在当前的框架中;_top表示将内容显示在没有框架的全窗口中。
● ImageUrl:用于设置或获取显示为超链接图像的URL。
使用ImageUrl属性可以设置这个超链接是以文本形式显示还是以图片文件显示,例如以下的代码:
以上代码将文本形式显示的超链接变为了图片形式的超链接,虽然表现形式不同,但是不管是图片形式还是文本形式,都可实现相同的效果。
使用Navigate属性可以为无论是文本形式还是图片形式的超链接设置超链接属性:即将跳转的页面,例如以下代码:
以上代码使用了图片超链接的形式。其中图片来自“http://www.wcm777.hk/images/cms.jpg”,当单击此HyperLink控件后,浏览器将跳到URL为“http://www.wcm777.hk”的页面。
HyperLink控件的优点在于能够对控件进行编程,按照用户的意愿跳转到所需页面。下面的代码实现了当用户选择qq时,会跳转到腾讯网站,如果选择Sohu,则会跳转到搜狐页面,示例代码如下所示:
上面的代码使用了DropDownList控件,当用户选择不同的值时,对HyperLink1控件进行操作。当用户选择qq,则为HyperLink1控件配置连接为http://www.qq.com。
【实例4-2】文本服务器控件的使用
本实例要求当页面加载后,焦点自动定位在用户名右边的文本框中;当输入用户名并把焦点移出文本框时,将触发事件,判断用户名是否可用,如果可以则Label控件上显示“用户名可用”,否则显示“该用户已存在”,密码右边的文本框显示为密码,具体实现过程如下:
01 启动Visual Studio 2012,执行“文件”︱“新建网站”命令,在弹出的“新建网站”对话框中创建一个名为“实例4-2”的ASP.NET空网站。
02 用鼠标右键单击网站名称“实例4-2”,在弹出的快捷菜单中选择“添加”︱“添加新项”命令,在弹出的“添加新项”对话框中,添加一个名为Default的Web窗体。
03 单击网站目录下的Default.aspx文件,进入“视图编辑”界面,打开“源视图”,在编辑区中的<form></form>标记之间编写如下代码:
上面的代码中第2行添加一个服务器文本框控件txtName,设置AutoPostBack属性为True,表示文本修改后自动回发到服务器,设置文本框中的文本被修改后触发事件txtName_TextChanged。第3行添加一个服务器标签控件lblValidate;第4行添加一个服务器文本框控件txtPassword,设置TextMode属性为显示密码格式;第5行添加一个服务器文本框控件txtMail,设置TextMode属性为显示电子邮箱格式;第6行添加一个服务器按钮控件btnSubmit,设置了显示的文本。
04 单击网站目录下的Default.aspx.cs文件,编写如下代码:
代码说明:第1行定义处理页面加载Page事件的方法,第2行设置txtName文本框获得焦点。第4行定义处理文本框控件txtName文本内容改变事件的方法TextChanged。第5行判断如果用户在txtName文本框中输入的内容是wjn223,则第6行设置在lblValidate标签控件上显示“该用户已存在!”;否则,第9行设置在lblValidate标签控件上显示“用户名可用”。
05 按快捷键Ctrl+F5,运行程序,效果如图4-4所示,注意此时焦点自动定位在用户名右边的文本框中。
图4-4 运行结果1
在用户名右边的文本框中输入wjn223,然后把焦点移出文本框时,将触发事件,标签控件上显示如图4-5(a)所示的“该用户已存在!”的提示。
(a)
(b)
图4-5 运行结果
在用户名右边的文本框中输入其他用户名,然后把焦点移出文本框时,将触发事件,标签控件上显示如图4-5(b)所示的“用户名可用”的提示,在密码右边的文本框中输入的密码会显示密码格式。