ASP.NET?MVC創(chuàng)建XML文件并實現(xiàn)元素增刪改
如果創(chuàng)建如下的XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Students> <Student Id="1"> <Name>darren</Name> </Student> </Students>
創(chuàng)建XML文件
在HomeController中,在根目錄下創(chuàng)建new.xml文件:
public ActionResult Index() { return View(); } [HttpPost] public ActionResult AddXml() { string path = Server.MapPath("~/new.xml"); XDocument doc = new XDocument( new XDeclaration("1.0","utf-8","yes"), new XElement("Students",new XElement("Student", new XAttribute("Id","1"), new XElement("Name","darren") )) ); doc.Save(path); return Json(new {msg = true}, JsonRequestBehavior.AllowGet); }
在Index.cshtml中通過異步請求:
@model IEnumerable<MvcApplication1.Models.Student> @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> <input type="button" value="創(chuàng)建XML" id="create"/> @section scripts { <script type="text/javascript"> $(function() { $('#create').on('click', function() { $.ajax({ url: '@Url.Action("AddXml", "Home")', dataType: 'json', data: {}, type: 'POST', success: function(data) { if (data.msg) { alert('創(chuàng)建成功'); } } }); }); }); </script> }
顯示XML文件元素
修改HomeController中的Index方法為:
public ActionResult Index() { string path = Server.MapPath("~/new.xml"); List<Student> result = new List<Student>(); var nodes = ReadXML(path).Descendants("Student"); foreach (var node in nodes) { Student student = new Student(); student.Id = Convert.ToInt32(node.Attribute("Id").Value); foreach (var ele in node.Elements()) { student.Name = ele.Value; } result.Add(student); } return View(result); } private XDocument ReadXML(string path) { XDocument xDoc = new XDocument(); xDoc = XDocument.Load(path); return xDoc; }
修改Home/Index.cshtml為:
@model IEnumerable<MvcApplication1.Models.Student> @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> <input type="button" value="創(chuàng)建XML" id="create"/> <table> <tr> <th>編號</th> <th>姓名</th> </tr> @foreach (var item in Model) { <tr> <td>@item.Id</td> <td>@item.Name</td> <td>@Html.ActionLink("修改","Update","Home",new {id= item.Id},null)</td> <td>@Html.ActionLink("刪除","Delete","Home", new {id = item.Id},null)</td> </tr> } </table> <br/> @Html.ActionLink("創(chuàng)建","Create","Home") @section scripts { <script type="text/javascript"> $(function() { $('#create').on('click', function() { $.ajax({ url: '@Url.Action("AddXml", "Home")', dataType: 'json', data: {}, type: 'POST', success: function(data) { if (data.msg) { alert('創(chuàng)建成功'); } } }); }); }); </script> }
添加元素到XML文件中
HomeController中:
public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Student student) { string path = Server.MapPath("~/new.xml"); XDocument xd = XDocument.Load(path); XElement newStudent = new XElement("Student", new XAttribute("Id", student.Id), new XElement("Name",student.Name)); xd.Root.Add(newStudent); xd.Save(path); return RedirectToAction("Index"); }
Home/Create.csthml中:
@model MvcApplication1.Models.Student @{ ViewBag.Title = "Create"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Create</h2> @using (Html.BeginForm("Create", "Home", FormMethod.Post, new {id = "addForm"})) { @Html.LabelFor(m => m.Id) @Html.EditorFor(m => m.Id) <br/> @Html.LabelFor(m => m.Name) @Html.EditorFor(m => m.Name) <br/> <input type="submit" value="創(chuàng)建"/> }
修改XML文件中的元素
HomeController中:
public ActionResult Update(string id) { string path = Server.MapPath("~/new.xml"); XElement xe = XElement.Load(path); var studentXe = xe.Elements("Student").Where(e => e.Attribute("Id").Value == id).FirstOrDefault(); Student student = new Student(); student.Id = Convert.ToInt32(studentXe.Attribute("Id").Value); student.Name = studentXe.Element("Name").Value; return View(student); } [HttpPost] public ActionResult Update(Student student) { string path = Server.MapPath("~/new.xml"); var studentId = student.Id.ToString(); XDocument xd = XDocument.Load(path); XElement node = xd.Root.Elements("Student").Where(e => e.Attribute("Id").Value == studentId).FirstOrDefault(); node.SetElementValue("Name", student.Name); xd.Save(path); return RedirectToAction("Index"); }
Home/Update.csthml中:
@model MvcApplication1.Models.Student @{ ViewBag.Title = "Update"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Update</h2> @using (Html.BeginForm("Update", "Home", FormMethod.Post, new {id = "editForm"})) { @Html.HiddenFor(m => m.Id) @Html.LabelFor(m => m.Name) @Html.EditorFor(m => m.Name) <br/> <input type="submit" value="修改"/> }
刪除XML文件中的元素
HomeController中:
public ActionResult Delete(string id) { string path = Server.MapPath("~/new.xml"); XElement xe = XElement.Load(path); var studentXe = xe.Elements("Student").Where(e => e.Attribute("Id").Value == id).FirstOrDefault(); Student student = new Student(); student.Id = Convert.ToInt32(studentXe.Attribute("Id").Value); student.Name = studentXe.Element("Name").Value; return View(student); } [HttpPost] public ActionResult Delete(Student student) { string path = Server.MapPath("~/new.xml"); var studentId = student.Id.ToString(); XDocument xd = XDocument.Load(path); xd.Root.Elements("Student").Where(e => e.Attribute("Id").Value == studentId).Remove(); xd.Save(path); return RedirectToAction("Index"); }
Home/Delete.cshtml中:
@model MvcApplication1.Models.Student @{ ViewBag.Title = "Delete"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Delete</h2> @Model.Id <br/> @Model.Name <br/> @using (Html.BeginForm("Delete", "Home", FormMethod.Post, new {id = "delForm"})) { @Html.HiddenFor(m => m.Id) <input type="submit" value="刪除"/> }
到此這篇關于ASP.NET MVC創(chuàng)建XML文件并實現(xiàn)元素增刪改的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
.Net?Core3.0?WebApi?項目框架搭建之使用Serilog替換掉Log4j
Serilog 是一個用于.NET應用程序的日志記錄開源庫,配置簡單,接口干凈,并可運行在最新的.NET平臺上,這篇文章主要介紹了.Net?Core3.0?WebApi?項目框架搭建之使用Serilog替換掉Log4j,需要的朋友可以參考下2022-02-02C#實現(xiàn)支持斷點續(xù)傳多線程下載客戶端工具類
C#實現(xiàn)支持斷點續(xù)傳多線程下載的 Http Web 客戶端工具類 (C# DIY HttpWebClient),感興趣的朋友可以參考下本文,或許對你有所幫助2013-04-04ASP.NET2.0數(shù)據(jù)庫入門之SqlDataSource
ASP.NET2.0數(shù)據(jù)庫入門之SqlDataSource...2006-09-09Ibatis.net結(jié)合oracle批量刪除實現(xiàn)代碼
本文介紹Ibatis.net結(jié)合oracle實現(xiàn)批量刪除寫法,并提供簡單的示例代碼供參考2012-12-12ASP.NET?MVC使用Log4Net記錄異常日志并跳轉(zhuǎn)到靜態(tài)頁
這篇文章介紹了ASP.NET?MVC使用Log4Net記錄異常日志并跳轉(zhuǎn)到靜態(tài)頁的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09