






















对于XmlHttp的介绍见http://www.cnblogs.com/helimin19/archive/2004/12/03/72519.aspx
,
本文主要实现了在donet中,前台界面与后台程序完成分离,以达到互不影响的效果,从而降低了前台后台之前的偶合度。(当然这种效果也只是相对的),就果我下面举的例子来说吧,会员注册和修改会员资料是在一个页面上显示。注册可以达到完成分离(后台程序可以完全不知道前台界面是什么样子的,也不需要知道前面界面窗体中包括哪些内容,即不需要知道前台将要传些什么值给我),但修改会员数据,就需要前台传个用户名来过,从而显示指定的用户信息。如果你采用其Cookies等用户级的变量来传的话,当然就可以达到完成分离的效果了。
1。xmlHttp.js---用於處於客戶端的XMLHTTP數據
2. tesaspx.htm---客戶端文件(即注冊修改會員資料頁面)
3.xmlHttp.cs---重載Page類(操作客戶端以XmlHttp發過的請求)
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;
using System.Collections.Specialized;
namespace Model.Code
{
/// <summary>
/// xmlHttp---對XmlHttp的操作(繼承自OverridePage類,表示其子類都是對XmlHttp發送過來的數據進行操作)
/// 冷風.net,2005/03/26
/// </summary>
public class XmlHttp : OverridePage
{
public XmlHttp(){}
/// <summary>
/// 生成XmlDocument對象
/// 作者:冷風,net,2005/03/26
/// </summary>
/// <param name="stream">xml格式的內存塊</param>
/// <returns>XmlDocument對象</returns>
protected System.Xml.XmlDocument CreateXmlDocument(System.IO.Stream stream)
{
System.Xml.XmlDocument doc = new XmlDocument();
try
{
doc.Load(stream);
}
catch
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer,0,buffer.Length);
string strXML = System.Text.UnicodeEncoding.Default.GetString(buffer,0,buffer.Length);
doc.LoadXml(strXML);
}
return doc;
}
/// <summary>
/// 獲得XmlNode中第一個指定的節點的文本值
/// 作者:冷風,net,2005/03/26
/// </summary>
/// <param name="node">XmlNode對象</param>
/// <param name="nodeName">要搜索的節點名稱</param>
/// <returns>節點的值</returns>
protected string GetXMLNodeValue(XmlNode node,string nodeName)
{
XmlNode subNode = node.SelectSingleNode("//"+nodeName);
return subNode.InnerText;
}
/// <summary>
/// 將XmlNode對象轉化為NameValueCollection對象
/// 作者:冷風,net,2005/03/26
/// </summary>
/// <param name="node">XmlNode對象</param>
/// <returns>NameValueCollection對象</returns>
protected NameValueCollection CreateNameValueCollectionFromXML(XmlNode node)
{
NameValueCollection nvc = new NameValueCollection();
for(int i=0;i<node.ChildNodes.Count;i++)
{
nvc.Add(node.ChildNodes[i].Name,node.ChildNodes[i].InnerText);
}
return nvc;
}
/// <summary>
/// 為了不返回不必要的數據,必須重載Render方法
/// 作者:冷風,net,2005/03/26
/// </summary>
/// <param name="writer">輸出參數</param>
protected override void Render(HtmlTextWriter writer)
{
}
}
}
4.test.aspx---對應的tesaspx.htm的請求文件
個人感覺這麼做,可以方便前台人台與後台人員合作開發時,前台人台可以完全不懂donet就行了,這樣對於前台的如何更改,是否采用該頁都不會影響後台的程式。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。