日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

一个简单的LINQ TO XML, AJAX 例子[译]

發(fā)布時(shí)間:2023/12/10 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个简单的LINQ TO XML, AJAX 例子[译] 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????? 這個(gè)教程是用Visual Studio.net 2008建立,也可以使用VS2005,但你需要從這里下載安裝Microsoft's ASP.NET AJAX ExtensionsAJAXLINQ是微軟目前主要焦點(diǎn),兩個(gè)看上去不足為奇,但背后都隱藏著巨大的潛力和力量。在這個(gè)示例中,我們將看到如何用AJAXLINQ,XML創(chuàng)建一個(gè)Web應(yīng)用程序,我們能用看到瞬間存儲(chǔ)數(shù)據(jù),也能瞬間增加數(shù)據(jù)。AJAX提供簡(jiǎn)單易用的方式平穩(wěn)高效地創(chuàng)建應(yīng)用程序。如果是一個(gè)桌面應(yīng)用程序,LINQ提供了一種方式與XML文件和數(shù)據(jù)存儲(chǔ)進(jìn)行交流和互動(dòng)。
???
首先,我們需要做的是創(chuàng)建我們的XML文件。對(duì)于這個(gè)例子中,我們將使用像這樣:

<?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>
??? 我們將創(chuàng)建一種既讀取和寫入
XML文件:我們將需要三個(gè)Textbox和一個(gè)增加的Button,然后是另一個(gè)button和一個(gè)用于讀去的textbox。我們將構(gòu)建一個(gè)這樣類似的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有一個(gè)OnClick 句柄指向一個(gè)方法。我們將這幾分鐘完成,但首先,讓我們完成我們的ASPX頁(yè)面。剩下的事兒是使頁(yè)面的AJAX生效。我們?cè)黾右粋€(gè)ScriptManager和一個(gè)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> ??
?? 在我們開始編碼之前,我們應(yīng)該務(wù)必使用正確的名稱空間。我們將使用
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; ?

??? 現(xiàn)在回到Buttons,我們已經(jīng)增加了一個(gè)Button的句柄,所以我們現(xiàn)在完成了ASPX頁(yè)面,現(xiàn)在可以編寫我們方法了,我們將創(chuàng)建一個(gè)讀去XML文件的方法,這個(gè)方法使一次或更多(你過會(huì)兒將看其它buttonClick就知道為什么了)。我們的方法寫成像這樣:

????????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文件,然后選擇文件里全部數(shù)據(jù)。一個(gè)選取,我們循環(huán)每條“record”輸出到textbox控件。我們這種方法為buttonClick的事件:

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

接下來是增加數(shù)據(jù)到XML文件。這實(shí)際上需要比讀去更少的代碼量,我們將在buttonclick事件下直接編碼。就這兒一樣:

???????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語句減少錯(cuò)誤處理。接著,我們使用LINQ增加數(shù)據(jù)到XML文件。當(dāng)我們第一次加載文件時(shí),然后我們簡(jiǎn)單增加了一個(gè)新的element到父element,請(qǐng)看到前面提及XML結(jié)構(gòu)有助于理解。

完整的code-behind是這樣的:

code
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.";
????????}

????}
}
?

下載示例項(xiàng)目

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

另:實(shí)際上判斷字符串空可以用String.IsNullOrEmpty方法。
翻譯:
Petter ?(版權(quán)歸原作者)
http://wintersun.cnblogs.com

轉(zhuǎn)載于:https://www.cnblogs.com/wintersun/archive/2008/10/04/1303893.html

總結(jié)

以上是生活随笔為你收集整理的一个简单的LINQ TO XML, AJAX 例子[译]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。