原文:MVC创建XML,并实现增删改

如果创建如下的XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Students>
<Student Id="1">
<Name>darren</Name>
</Student>
</Students>

创建XML文件

在HomeController中,在根目录下创建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="创建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('创建成功');
}
}
});
});
});
</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="创建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("创建","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('创建成功');
}
}
});
});
});
</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="创建"/>
}

修改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="删除"/>
}

MVC创建XML,并实现增删改的更多相关文章

  1. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  2. 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能

    此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...

  3. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  4. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  5. 第16课-数据库开发及ado.net-数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍

    第16课-数据库开发及ado.net 数据库SQl,创建数据库和表,增删改语句,约束,top和Distinct,聚合函数介绍 SQL语句入门(脚本.命令) SQL全名是结构化查询语言(Structur ...

  6. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  7. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  8. asp.net下利用MVC模式实现Extjs表格增删改查

    在网上看到有很多人写extjs下的表格控件的增删改查,但是大多数都是直接从后台读取数据,很少有跟数据库进行交互的模式. 今天就来写一个这样的例子.欢迎大家交流指正. 首先简单介绍一下MVC模式,MVC ...

  9. XML(五)dom4j增删改查

    book2.xml <? xml version="1.0" encoding="UTF-8"?> <书架> <书> < ...

随机推荐

  1. SDUTOJ 1298 活动选择

    #include<iostream> #include<memory.h> using namespace std; int a[105],b[105],c[105],d[10 ...

  2. 事件冒泡 ,停止事件冒泡 e.stopPropagation()

    <1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>防止起泡 ...

  3. JTree

    http://www.easyicon.net/ package swing.tree; import java.awt.BorderLayout; import java.awt.Component ...

  4. Java 多线程编程两个简单的例子

    /** * @author gao */ package gao.org; public class RunnableDemo implements Runnable{ @Override publi ...

  5. SQL 2008执行语句遇到内存不足(1)——error 701

    原文:SQL 2008执行语句遇到内存不足(1)--error 701 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/17/sql-2008-e ...

  6. 理解git经常使用命令原理

    git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...

  7. 【剑指offer】最小的k的数量

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26966159 题目描写叙述: 输入n个整数,找出当中最小的K个数.比如输入4,5,1,6, ...

  8. AndroidManifest:VersionCode和VersionName

    Google为APK定义了两个关于版本号属性:VersionCode和VersionName,他们有不同的用途. VersionCode:对消费者不可见.仅用于应用市场.程序内部识别版本号,推断新旧等 ...

  9. 章节2:SQL之多表连接

    原文:章节2:SQL之多表连接 Sql的多表连接关系有:内连接.外连接和交叉连接. 先建立两个用于演示的表: TB_Characters: Id Character 1 内向 2 外向 3 中性性格 ...

  10. 【翻译】在Ext JS 5应用程序中怎样使用路由

    原文:How to Use Routing in Your Ext JS 5 Apps 简单介绍 Ext JS 5是一个重要的公布版本号,它提供了很多新特性来创建丰富的.企业级的Web应用程序.MVV ...