Posted on 2005-03-26 16:54
冷风.net 阅读(3806)
评论(7) 编辑 收藏 引用 收藏至365Key 所属分类:
DONET
对于XmlHttp的介绍见http://www.cnblogs.com/helimin19/archive/2004/12/03/72519.aspx
,
本文主要实现了在donet中,前台界面与后台程序完成分离,以达到互不影响的效果,从而降低了前台后台之前的偶合度。(当然这种效果也只是相对的),就果我下面举的例子来说吧,会员注册和修改会员资料是在一个页面上显示。注册可以达到完成分离(后台程序可以完全不知道前台界面是什么样子的,也不需要知道前面界面窗体中包括哪些内容,即不需要知道前台将要传些什么值给我),但修改会员数据,就需要前台传个用户名来过,从而显示指定的用户信息。如果你采用其Cookies等用户级的变量来传的话,当然就可以达到完成分离的效果了。

1。xmlHttp.js---用於處於客戶端的XMLHTTP數據
//將所有的客戶端表單數據生成XML文件
function GetAllFormData()
{
var strXML = "<Client>\r\n<FormData>\r\n";
for(var i=0;i<=document.forms(0).item.length;i++)
{
strXML += "<" + document.forms(0).item(i).name + ">";
strXML += document.forms(0).item(i).value;
strXML += "</" + document.forms(0).item(i).name + ">\r\n";
}
strXML += "</FormData>\r\n</Client>"
return strXML;
}

///向服務器發送XML文檔
function Send(Str,URL)
{
var Http = new ActiveXObject("Microsoft.XMLHTTP")
Http.open("POST",URL,false)
Http.send(Str)
return Http.responseText;
}

///獲得XML中指定的節點的值
function GetXMLNodeValue(strXML,nodeName)
{
var Dom = new ActiveXObject("Microsoft.XMLDOM")
Dom.async=false
Dom.loadXML(strXML)
if(Dom.parseError.errorCode != 0)
{
delete(Dom)
return(false)
}
else
{
var node = Dom.documentElement.selectSingleNode("//"+nodeName);
if(node)
nodeValue = node.text;
delete(Dom)
return(nodeValue);
}
}
2. tesaspx.htm---客戶端文件(即注冊修改會員資料頁面)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>NewUser</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="javascript" src="xmlHttp.js"></script>
<script language=javascript>
<!--
///本頁的測試用例
function Test()
{
var tmp = Send(GetAllFormData(),"./test.aspx");
document.Form1.UserName.value = GetXMLNodeValue(tmp,"UserName");
document.Form1.PassWord.value = GetXMLNodeValue(tmp,"PassWord");
document.Form1.EMail.value = GetXMLNodeValue(tmp,"EMail");
document.Form1.Question.value = GetXMLNodeValue(tmp,"Question");
document.Form1.Answer.value = GetXMLNodeValue(tmp,"Answer");
}
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
4.test.aspx---對應的tesaspx.htm的請求文件
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.VIP