页面部分更新技术:联系表单示例

在现代网络应用中,为了提高用户体验和页面加载速度,经常需要实现页面的部分更新,而不是将整个页面回传到服务器。这种页面渲染方式被称为部分页面渲染,它显著提高了性能。本文将讨论一个演示程序,该程序是一个联系表单,它能够在不提交整个网页的情况下将数据提交到服务器。在这个示例中,数据库是一个简单的XML文件,用户在表单中输入的所有数据都将保存在这个XML文件中。

在演示程序中,使用了名为'Microsoft.Web.Preview.dll'的.dll文件,该文件需要添加到程序的Bin文件夹中,以实现部分页面更新进度面板的功能。接下来是XML文件(Contacts.xml),它位于名为'db'的文件夹中,并且有一个Web.config文件稍后会阻止对Contacts.xml的访问。

在Default.aspx页面上,有联系表单界面的代码,一个UpdateProgress控件(为此添加了.dll文件)以及一个显示提交成功的面板。所有这些都包含在UpdatePanel控件中,并设置了ChildrenAsTriggers="true"属性。这意味着任何包含控件触发的事件都会异步回传到服务器。UpdateProgress控件的显示/隐藏由以下代码管理:

<script language="javascript" type="text/javascript"> var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_initializeRequest(InitializeRequest); prm.add_endRequest(EndRequest); function InitializeRequest(sender, args) { $get('formUpdate').style.display = 'block'; } function EndRequest(sender, args) { $get('formUpdate').style.display = 'none'; } </script>

在上面的代码中,formUpdate是UpdateProgress控件的ID,有两个函数,第一个在异步回传初始化时调用,第二个在调用结束时调用。

现在,将讨论代码后台页面上的代码。在提交按钮点击事件上,加载了XML文件到数据集中,然后通过添加新的数据行,联系信息已经被写入XML文件。处理函数如下:

C# protected void btnSubmit_OnClick(object sender, EventArgs e) { if (Page.IsValid) { System.Threading.Thread.Sleep(1200); DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("~/db/Contacts.xml"), XmlReadMode.InferSchema); DataRow drow = ds.Tables["contact"].NewRow(); drow["name"] = txtName.Text; drow["age"] = txtAge.Text; drow["country"] = txtCountry.Text; drow["phone"] = txtPhone.Text; drow["email"] = txtEmail.Text; drow["message"] = txtMessage.Text; ds.Tables["contact"].Rows.Add(drow); ds.Tables["contact"].WriteXml(Server.MapPath("~/db/Contacts.xml")); pnlForm.Visible = false; pnlShowSuccess.Visible = true; } }

首先,程序检查当前请求的页面有效性。然后线程暂停1200毫秒,这是UpdateProgress控件显示的最小时间。可以根据需要更改它。现在XML已经加载到数据集中,并且推断了模式(必须记住在XML中放置一个包含所有联系字段的空白行)。在联系表中添加了一个新的数据行(即一组<contact>节点),用户填写的所有值现在都分配给了相关字段,然后该行被添加到表中并写入XML文件。最后,使用面板显示成功消息。

然而,使用了这个Ajax启用的更新进度面板用于按钮点击事件,尽管它可以用于许多其他ASPX控件的不同事件。例如,DropDownList SelectionChanged事件,RadioButton或CheckBox CheckedChanged事件,LinkButton Click事件等。

实际的内容作为演示附加。当看到下载文件时,会很容易理解。必须记住,对于上述程序要工作,必须在XML文件中添加一个空白行。否则,数据集将无法推断想要添加联系详细信息的表的模式。

可能还对另一篇文章感兴趣,即“使用jQuery显示进度条”。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485