对于XmlHttp的介绍见http://www.cnblogs.com/helimin19/archive/2004/12/03/72519.aspx

本文主要实现了在donet中,前台界面与后台程序完成分离,以达到互不影响的效果,从而降低了前台后台之前的偶合度。(当然这种效果也只是相对的),就果我下面举的例子来说吧,会员注册和修改会员资料是在一个页面上显示。注册可以达到完成分离(后台程序可以完全不知道前台界面是什么样子的,也不需要知道前面界面窗体中包括哪些内容,即不需要知道前台将要传些什么值给我),但修改会员数据,就需要前台传个用户名来过,从而显示指定的用户信息。如果你采用其Cookies等用户级的变量来传的话,当然就可以达到完成分离的效果了。

XmlHttp在DoNet中的完全应用---前/后台完成分离篇
1。xmlHttp.js---用於處於客戶端的XMLHTTP數據

XmlHttp在DoNet中的完全应用---前/后台完成分离篇//將所有的客戶端表單數據生成XML文件
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
function GetAllFormData()
XmlHttp在DoNet中的完全应用---前/后台完成分离篇{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
var strXML = "<Client>\r\n<FormData>\r\n";
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
for(var i=0;i<=document.forms(0).item.length;i++)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    {
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        strXML 
+= "<" + document.forms(0).item(i).name + ">";
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        strXML 
+= document.forms(0).item(i).value;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        strXML 
+= "</" + document.forms(0).item(i).name + ">\r\n";
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    }
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    strXML 
+= "</FormData>\r\n</Client>"
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
return strXML;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇}
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
///向服務器發送XML文檔
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
function Send(Str,URL) 
XmlHttp在DoNet中的完全应用---前/后台完成分离篇{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
var Http = new ActiveXObject("Microsoft.XMLHTTP")
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    Http.open(
"POST",URL,false)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    Http.send(Str)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
return Http.responseText;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇}
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
///獲得XML中指定的節點的值
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
function GetXMLNodeValue(strXML,nodeName)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
var Dom = new ActiveXObject("Microsoft.XMLDOM")
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    Dom.async
=false 
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    Dom.loadXML(strXML)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
if(Dom.parseError.errorCode != 0
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    {
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
delete(Dom)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
return(false)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    }
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
else
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    {
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
var node = Dom.documentElement.selectSingleNode("//"+nodeName);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
if(node)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            nodeValue 
= node.text;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
delete(Dom)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
return(nodeValue);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    }
XmlHttp在DoNet中的完全应用---前/后台完成分离篇}

2. tesaspx.htm---客戶端文件(即注冊修改會員資料頁面)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
<HTML>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
<HEAD>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<title>NewUser</title>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<meta content="C#" name="CODE_LANGUAGE">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<meta content="JavaScript" name="vs_defaultClientScript">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<script language="javascript" src="xmlHttp.js"></script>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<script language=javascript>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<!--
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            ///本頁的測試用例
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            function Test()
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            {
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                var tmp 
= Send(GetAllFormData(),"./test.aspx");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
document.Form1.UserName.value  = GetXMLNodeValue(tmp,"UserName");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
document.Form1.PassWord.value  = GetXMLNodeValue(tmp,"PassWord");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
document.Form1.EMail.value  = GetXMLNodeValue(tmp,"EMail");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
document.Form1.Question.value  = GetXMLNodeValue(tmp,"Question");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
document.Form1.Answer.value  = GetXMLNodeValue(tmp,"Answer");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
}

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
</script>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
</HEAD>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
<body MS_POSITIONING="GridLayout" >
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
<form id="Form1" method="post" name="Form1">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
<FONT face="新細明體">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
<DIV style="Z-INDEX: 102; LEFT: 192px; WIDTH: 288px; POSITION: absolute; TOP: 64px; HEIGHT: 200px"
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    ms_positioning
="FlowLayout">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<DIV>用戶名:<INPUT id="UserName" type="text" name="UserName"></DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<DIV>密碼:<INPUT id="PassWord" type="password" name="PassWord" ></DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<div id="HidPass" runat="server" ms_positioning="FlowLayout">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                        確認密碼:
<INPUT id="ConPassWord" type="password" name="ConPassWord">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
</div>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<DIV>EMail:<INPUT id="EMail" type="text" name="EMail"></DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<DIV>密碼提示語:<INPUT id="Question" type="text" name="Question" ></DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<DIV>密碼答案:<INPUT id="Answer" type="text" name="Answer" ></DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<DIV id="HidSafeCode" runat="server">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                        驗證碼:
<INPUT id="CheckCode" type="text" name="CheckCode" ><IMG src="SafeCode.aspx" border="0">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
</DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<INPUT type="reset" value="Reset" name="reset">
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    
<INPUT id="Button3" type="button" value="XML" name="Button3" onclick="Test();" >
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
</DIV>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
</FONT>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
</form>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
</body>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
</HTML>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇

3.xmlHttp.cs---重載Page類(操作客戶端以XmlHttp發過的請求)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇using System;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Collections;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.ComponentModel;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Data;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Drawing;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.SessionState;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.UI;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.UI.WebControls;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.UI.HtmlControls;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Xml;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.IO;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Collections.Specialized;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
namespace Model.Code
{

XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
/// xmlHttp---對XmlHttp的操作(繼承自OverridePage類,表示其子類都是對XmlHttp發送過來的數據進行操作)
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
/// 冷風.net,2005/03/26
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    public class XmlHttp : OverridePage
{

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 生成XmlDocument對象
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 作者:冷風,net,2005/03/26
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <param name="stream">xml格式的內存塊</param>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <returns>XmlDocument對象</returns>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        protected System.Xml.XmlDocument CreateXmlDocument(System.IO.Stream stream)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            System.Xml.XmlDocument doc 
= new XmlDocument();
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
try
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                doc.Load(stream);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
catch
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
byte[] buffer = new byte[stream.Length];
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                stream.Read(buffer,
0,buffer.Length);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
string strXML = System.Text.UnicodeEncoding.Default.GetString(buffer,0,buffer.Length);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                doc.LoadXml(strXML);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
return doc;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 獲得XmlNode中第一個指定的節點的文本值
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 作者:冷風,net,2005/03/26
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <param name="node">XmlNode對象</param>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <param name="nodeName">要搜索的節點名稱</param>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <returns>節點的值</returns>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        protected string GetXMLNodeValue(XmlNode node,string nodeName)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            XmlNode subNode 
= node.SelectSingleNode("//"+nodeName);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
return subNode.InnerText;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 將XmlNode對象轉化為NameValueCollection對象
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 作者:冷風,net,2005/03/26
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <param name="node">XmlNode對象</param>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <returns>NameValueCollection對象</returns>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        protected NameValueCollection CreateNameValueCollectionFromXML(XmlNode node)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            NameValueCollection nvc 
= new NameValueCollection();
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
for(int i=0;i<node.ChildNodes.Count;i++)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                nvc.Add(node.ChildNodes[i].Name,node.ChildNodes[i].InnerText);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
return nvc;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
///    為了不返回不必要的數據,必須重載Render方法
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
///    作者:冷風,net,2005/03/26
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// <param name="writer">輸出參數</param>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        protected override void Render(HtmlTextWriter writer)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇    }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇}

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

4.test.aspx---對應的tesaspx.htm的請求文件
XmlHttp在DoNet中的完全应用---前/后台完成分离篇using System;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Collections;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.ComponentModel;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Data;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Drawing;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.SessionState;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.UI;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.UI.WebControls;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Web.UI.HtmlControls;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Xml;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.IO;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
using System.Collections.Specialized;
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
namespace Model.VIP
{

XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
/// test 的摘要描述。
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    public class test : Code.XmlHttp
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
private string m_strXml="";
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
private void Page_Load(object sender, System.EventArgs e)
{    
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            XmlDocument doc 
= this.CreateXmlDocument(this.Request.InputStream);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
string userName = GetXMLNodeValue(doc.DocumentElement,"UserName");
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            DataSet ds 
= Code.Users.GetUserInfo(userName);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
//如果存在數值則表明是修改會員信息,否則為新增加
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
            if(ds!=null && ds.Tables[0].Rows.Count>0)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                m_strXml 
= ds.GetXml();
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
else
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                NameValueCollection userInfo 
= this.CreateNameValueCollectionFromXML(doc.DocumentElement.FirstChild);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
string returnValue = Code.Users.AddUser(userInfo);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
if(returnValue=="OK")
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    m_strXml 
="注冊成功!";
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇                
else
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                    m_strXml 
= "注冊失敗 !";
XmlHttp在DoNet中的完全应用---前/后台完成分离篇                }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇            }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇            Response.Write(m_strXml);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
override protected void OnInit(EventArgs e)
{
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
//
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
//
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
            InitializeComponent();
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
base.OnInit(e);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// 這個方法的內容。
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
/// </summary>
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        private void InitializeComponent()
{    
XmlHttp在DoNet中的完全应用---前/后台完成分离篇            
this.Load += new System.EventHandler(this.Page_Load);
XmlHttp在DoNet中的完全应用---前/后台完成分离篇
XmlHttp在DoNet中的完全应用---前/后台完成分离篇        }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇        
#endregion
XmlHttp在DoNet中的完全应用---前/后台完成分离篇    }

XmlHttp在DoNet中的完全应用---前/后台完成分离篇}

XmlHttp在DoNet中的完全应用---前/后台完成分离篇

個人感覺這麼做,可以方便前台人台與後台人員合作開發時,前台人台可以完全不懂donet就行了,這樣對於前台的如何更改,是否采用該頁都不會影響後台的程式。

相关文章:

  • 2021-12-31
  • 2021-05-11
  • 2021-07-25
  • 2022-12-23
  • 2021-06-01
  • 2022-12-23
  • 2021-12-13
  • 2022-12-23
猜你喜欢
  • 2022-01-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-26
相关资源
相似解决方案