5.3 文本框控件(TextBox)

  在Web开发中,Web应用程序通常需要和用户进行交互,例如用户注册、登录、发帖等,那么就需要文本框控件(TextBox)来接受用户输入的信息。开发人员还可以使用文本框控件制作高级的文本编辑器用于HTML,以及文本的输入输出。

5.3.1 文本框控件的属性
  通常情况下,默认的文本控件(TextBox)是一个单行的文本框,用户只能在文本框中输入一行内容。通过修改该属性,则可以将文本框设置为多行/或者是以密码形式显示,文本框控件常用的控件属性如下所示。
?1)AutoPostBack:在文本修改以后,是否自动重传
?2)Columns:文本框的宽度。
?3)EnableViewState:控件是否自动保存其状态以用于往返过程。
?4)MaxLength:用户输入的最大字符数。
?5)ReadOnly:是否为只读。
?6)Rows:作为多行文本框时所显式的行数。
?7)TextMode:文本框的模式,设置单行,多行或者密码。
?8)Wrap:文本框是否换行。
1.AutoPostBack(自动回传)属性
  在网页的交互中,如果用户提交了表单,或者执行了相应的方法,那么该页面将会发送到服务器上,服务器将执行表单的操作或者执行相应方法后,再呈现给用户,例如按钮控件、下拉菜单控件等。如果将某个控件的AutoPostBack属性设置为true时,则如果该控件的属性被修改,那么同样会使页面自动发回到服务器。

2.EnableViewState(控件状态)属性
  ViewState是ASP.NET中用来保存Web控件回传状态的一种机制,它是由ASP.NET页面框架管理的一个隐藏字段。在回传发生时,ViewState数据同样将回传到服务器,ASP.NET框架解析ViewState字符串并为页面中的各个控件填充该属性。而填充后,控件通过使用ViewState将数据重新恢复到以前的状态。
在使用某些特殊的控件时,如数据库控件,来显示数据库。每次打开页面执行一次数据库往返过程是非常不明智的。开发人员可以绑定数据,在加载页面时仅对页面设置一次,在后续的回传中,控件将自动从ViewState中重新填充,减少了数据库的往返次数,从而不使用过多的服务器资源。在默认情况下,EnableViewState的属性值通常为true。

3.其他属性
  上面的两个属性是比较重要的属性,其他的属性也经常使用。
?1)MaxLength:在注册时可以限制用户输入的字符串长度。
?2)ReadOnly:如果将此属性设置为true,那么文本框内的值是无法被修改的。
?3)TextMode:此属性可以设置文本框的模式,例如单行、多行和密码形式。默认情况下,不设置TextMode属性,那么文本框默认为单行。

5.3.2 文本框控件的使用
  在默认情况下,文本框为单行类型,同时文本框模式也包括多行和密码,示例代码如下所示。
+展开
-HTML
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br >
        <br >
        <asp:TextBox ID="TextBox2" runat="server" Height="101px" TextMode="MultiLine" 
            Width="325px">
</asp:TextBox>
        <br >
        <br >
        <asp:TextBox ID="TextBox3" runat="server" TextMode="Password"></asp:TextBox>

上述代码演示了三种文本框的使用方法,上述代码运行后的结果如图5-3所示。
文本框的三种形式
图5-3 文本框的三种形式

  文本框无论是在Web应用程序开发还是Windows应用程序开发中都是非常重要的。文本框在用户交互中能够起到非常重要的作用。在文本框的使用中,通常需要获取用户在文本框中输入的值或者检查文本框属性是否被改写。当获取用户的值的时候,必须通过一段代码来控制。文本框控件HTML页面示例代码如下所示。
+展开
-HTML
    <form id="form1" runat="server">
    <div>    
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br >
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br >
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        <br >   
    </div>
    </form>

  上述代码声明了一个文本框控件和一个按钮控件,当用户单击按钮控件时,就需要实现标签控件的文本改变。为了实现相应的效果,可以通过编写cs文件代码进行逻辑处理,示例代码如下所示:
+展开
-C#
namespace _5_3//页面命名空间
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)//页面加载时触发
        {
        }
        protected void Button1_Click(object sender, EventArgs e)//双击按钮时触发的事件
        {
            Label1.Text = TextBox1.Text;//标签控件的值等于文本框中控件的值
        }
    }
}

  上述代码中,当双击按钮时,就会触发一个按钮事件,这个事件就是将文本框内的值赋值到标签内,运行结果如图5-4所示。
文本框控件的使用
图5-4 文本框控件的使用

  同样,双击文本框控件,会触发TextChange事件。而当运行时,当文本框控件中的字符变化后,并没有自动回传,是因为默认情况下,文本框的AutoPostBack属性被设置为false。当AutoPostBack属性被设置为true时,文本框的属性变化,则会发生回传,示例代码如下所示。
+展开
-C#
        protected void TextBox1_TextChanged(object sender, EventArgs e)//文本框事件
        {
            Label1.Text = TextBox1.Text;//控件相互赋值
        }

  上述代码中,为TextBox1添加了TextChanged事件。在TextChanged事件中,并不是每一次文本框的内容发生了变化之后,就会重传到服务器,这一点和WinForm是不同的,因为这样会大大的降低页面的效率。而当用户将文本框中的焦点移出导致TextBox就会失去焦点时,才会发生重传。

加支付宝好友偷能量挖...


评论(0)网络
阅读(189)喜欢(0)Asp.Net/C#/WCF