作业帮 > ASP.NET > 教育资讯

ASP.NET教程:ASP.NET动态添加文本框参考做法

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/10 19:11:09 ASP.NET
ASP.NET教程:ASP.NET动态添加文本框参考做法
ASP.NET教程:ASP.NET动态添加文本框参考做法ASP.NET
【51Test.NET-ASP.NET教程:ASP.NET动态添加文本框参考做法】:

在ASP.NET开发中,有时需要动态添加表单元素,即在运行时根据用户的需求选择,往页面上添加指定数量的表单元素。一般容易犯的错误,是用开发Winform应用程序的思路,在后台简单编写诸如下面的代码:

TextBox tb=new TextBox();
div1.Controls.Add(tb);

WebForm有个特点,应用程序的界面和后台逻辑是分别运行在不同地方,即浏览器端负责页面的解析和显示,服务器端负责页面的主要生成(javascript等浏览器端脚本也可负责一部分生成,所以这里称为“主要生成”),浏览器-服务器之间的请求响应遵从http协议,http是一种无状态的连接。在ASP.NET中,浏览器端每次请求页面,服务器都会重新生成相应的Page。如果后台动态添加控件或表单元素到页面,则当下次客户submit后,会发现新添加的东西会丢失,这是因为动态添加的控件在aspx文件中不存在,所以它的ViewState没有起作用,相应的视图状态没有保持下来。虽然有一些服务器端的方法可以解决这个问题,但解决的比较繁琐,我认为较佳的做法还是在浏览器端用javascript动态添加。下面这个例子很能说明问题,也比较容易弄懂。

Default.aspx文件:

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %> 2  3  html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 5 6     7     21 22 23    

24     25         请选择…26         127         228         329         430         531     32    
33     34     35 36

Default.aspx.cs文件:

 1 using System; 2  3 public partial class Default : System.Web.UI.Page 4 { 5     protected void Page_Load(object sender, EventArgs e) 6     { 7  8     } 9     protected void Button1_Click(object sender, EventArgs e)10     {11         if (Request["textCount"] != null)12         {13             int textCount = int.Parse(Request["textCount"]);14             for (int i = 0; i < textCount; i++)15                 Response.Write(Request["userInfo" + i.ToString()] + "
");16         }17     }18 }
在aspx文件代码中,添加了一个DropDownList控件、一个div元素和一个Button控件。当改变下拉列表框中的某个选项时,发生客户端onchange事件,执行createInputTexts方法。createInputTexts方法的作用是向div中添加指定选择数量的文本框,并添加一个隐藏域记录添加文本框的数量。当单击按钮后,服务器端通过Request["隐藏域的name属性值"]获取这个数量,然后利用for循环逐个获取各文本框的值,输出到页面上。

ASP.NET