这个课程是为此Visual
Studio.net 2008建,也得以应用VS2005,但若要打这里下载安装Microsoft’s ASP.NET AJAX
Extensions,AJAX和LINQ是微软时重大症结,两单看起来不足为惊诧,但私下都藏匿着巨大的潜力与力。在此示例中,我们将视怎样用AJAX同LINQ,XML创建一个Web应用程序,我们会就此来看瞬间储存数据,也能转净增数据。AJAX提供简好用之方平稳快速地创造应用程序。如果是一个桌面应用程序,而LINQ提供了平种植办法跟XML文件及多少存储进行交流以及彼此。
    首先,我们得举行的凡创造我们的XML文件。对于这个事例中,我们以采用像这么:

<?xml version=”1.0″ encoding=”utf-8″?>
<Persons> 
<Person> 
<Name>Paxton</Name>
<City>Munich</City>
<Age>29</Age>
</Person>
<Person> 
<Name>Mike</Name>
<City>Orlando</City>
<Age>33</Age>
</Person>
</Persons>

    我们用创造同栽既读取和描绘副XML文件:我们以急需三只Textbox和一个增的Button,然后是另外一个button和一个用于读去的textbox。我们拿构建一个如此看似的Form:

<form id=”form1″ runat=”server”> 
<strong>Add to XML</strong><br />
Name:<br />
<asp:TextBox ID=”txtName” runat=”server” /><br />
City:<br />
<asp:TextBox ID=”txtCity” runat=”server” /><br />
Age:<br />
<asp:TextBox ID=”txtAge” runat=”server” /><br />
<asp:Button ID=”butAdd” runat=”server” Text=”Add” onclick=”butAdd_Click” /><br />
<asp:Label ID=”lblStatus” runat=”server” />
<br /><br />
<strong>Read XML:</strong><br />
<asp:Button ID=”butRead” runat=”server” Text=”Read” onclick=”butRead_Click” /><br />
<asp:TextBox ID=”txtResults” runat=”server” Columns=”25″ Rows=”10″ 
TextMode=”MultiLine” />
</form> 

   
注意那是我们的buttons有一个OnClick 句柄指向一个措施。我们用即时几乎分钟到位,但第一,让我们完成我们的ASPX页面。剩下的政是使页面的AJAX生效。我们加一个ScriptManager和一个UpdatePanel,像这么:

<form id=”form1″ runat=”server”> 
<asp:ScriptManager id=”ScriptManager1″ runat=”server” />
<asp:UpdatePanel ID=”updAdd” runat=”server”>
<Triggers> 
<asp:AsyncPostBackTrigger ControlID=”butAdd” EventName=”Click” />
</Triggers>
<ContentTemplate> 
<strong>Add to XML</strong><br />
Name:<br />
<asp:TextBox ID=”txtName” runat=”server” /><br />
City:<br />
<asp:TextBox ID=”txtCity” runat=”server” /><br />
Age:<br />
<asp:TextBox ID=”txtAge” runat=”server” /><br />
<asp:Button ID=”butAdd” runat=”server” Text=”Add” onclick=”butAdd_Click” /><br />
<asp:Label ID=”lblStatus” runat=”server” />
<br /><br />
<strong>Read XML:</strong><br />
<asp:Button ID=”butRead” runat=”server” Text=”Read” onclick=”butRead_Click” /><br />
<asp:TextBox ID=”txtResults” runat=”server” Columns=”25″ Rows=”10″ 
TextMode=”MultiLine” />
</ContentTemplate>
</asp:UpdatePanel>
</form>

  
  
于我们开编码之前,我们应该要使用对的名空间。我们拿用LINQ
TO XML,所以我们需要
System.Xml.Linq。代码看上去像这样:

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

 

   
现在返回Buttons,我们已经长了一个Button的句柄,所以我们今天成功了ASPX页面,现在足编制我们方法了,我们将创一个诵读去XML文件之道,这个法子要一差还是重多(你过会儿将关押另外button的Click就明白为何了)。我们的法子勾勒成如这么:

        protected void readXML()
        {
            XDocument xmlDoc = XDocument.Load(Server.MapPath(“People.xml”));

            var persons = from person in xmlDoc.Descendants(“Person”)
                          select new
                          {
                              Name = person.Element(“Name”).Value,
                              City = person.Element(“City”).Value,
                              Age = person.Element(“Age”).Value,
                          };

            txtResults.Text = “”;
            foreach (var person in persons)
            {
                txtResults.Text = txtResults.Text + “Name: ” + person.Name + “\n”;
                txtResults.Text = txtResults.Text + “City: ” + person.City + “\n”;
                txtResults.Text = txtResults.Text + “Age: ” + person.Age + “\n\n”;
            }

            if (txtResults.Text == “”)
                txtResults.Text = “No Results.”;
        }

 

立刻道应用了LINQ连接XML文件,然后择文件里一切多少。一个精选,我们循环每条“record”输出及textbox控件。我们这种艺术为button的Click的波:

       protected void butRead_Click(object sender, EventArgs e)
        {
            readXML();
            lblStatus.Text = “”;
        }

 

紧接下是增加多少到XML文件。这实在要比读去又少的代码量,我们将以button的click事件下直接编码。就这一样:

       protected void butAdd_Click(object sender, EventArgs e)
        {
            try
            {
                XDocument xmlDoc = XDocument.Load(Server.MapPath(“People.xml”));
              
                xmlDoc.Element(“Persons”).Add(new XElement(“Person”, new XElement(“Name”, txtName.Text),
                new XElement(“City”, txtCity.Text), new XElement(“Age”, txtAge.Text)));

                xmlDoc.Save(Server.MapPath(“People.xml”));
                lblStatus.Text = “Data successfully added to XML file.”;
                readXML();
            }
            catch
            {
                lblStatus.Text = “Sorry, unable to process request. Please try again.”;
            }
        }

 

咱应用try,catch语句减少错误处理。接着,我们采用LINQ增加多少及XML文件。当我们先是软加载文件时,然后我们大概加了一个新的element到父element,请看前提及XML结构推进了解。

一体化的code-behind是这样的:

XML 1XML 2code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;

namespace THttpModule.LinqtoXml
{
    public partial class Add : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void butRead_Click(object sender, EventArgs e)
        {
            readXML();
            lblStatus.Text = “”;
        }

        protected void butAdd_Click(object sender, EventArgs e)
        {
            try
            {
                XDocument xmlDoc = XDocument.Load(Server.MapPath(“People.xml”));
              
                xmlDoc.Element(“Persons”).Add(new XElement(“Person”, new XElement(“Name”, txtName.Text),
                new XElement(“City”, txtCity.Text), new XElement(“Age”, txtAge.Text)));

                xmlDoc.Save(Server.MapPath(“People.xml”));
                lblStatus.Text = “Data successfully added to XML file.”;
                readXML();
            }
            catch
            {
                lblStatus.Text = “Sorry, unable to process request. Please try again.”;
            }
        }

        protected void readXML()
        {
            XDocument xmlDoc = XDocument.Load(Server.MapPath(“People.xml”));

            var persons = from person in xmlDoc.Descendants(“Person”)
                          select new
                          {
                              Name = person.Element(“Name”).Value,
                              City = person.Element(“City”).Value,
                              Age = person.Element(“Age”).Value,
                          };

            txtResults.Text = “”;
            foreach (var person in persons)
            {
                txtResults.Text = txtResults.Text + “Name: ” + person.Name + “\n”;
                txtResults.Text = txtResults.Text + “City: ” + person.City + “\n”;
                txtResults.Text = txtResults.Text + “Age: ” + person.Age + “\n\n”;
            }

            if (txtResults.Text == “”)
                txtResults.Text = “No Results.”;
        }

    }
}

 

下载示例项目

 
原文:Using AJAX, LINQ and XML in
C#
http://www.ajaxtutorials.com/ajax-tutorials/using-ajax-linq-and-xml-in-c/
 

其他:实际上判断字符串空可以用String.IsNullOrEmpty方法。
翻译:Petter  (版权归原作者)
http://wintersun.cnblogs.com

相关文章

网站地图xml地图