文章目录
简单介绍
上一期中介绍了两表的约束关系的建立,这期将实现两表的增删改查。该文章仍然是基于MVC项目模型下。
开始先在Views文件下创建一个名为User的文件夹
框架搭建
1.控制器创建
右击文件Controllers->添加->控制器
2.视图创建
右击代码中的Index
添加视图->修改视图名称为Index并输入User文件的布局页
点击添加
创建增删改查视图页也是同样操作
但在创建视图前需要在控制器内手动输入控制器的动作方法,并将动作方法名按照增删改查的名称命名。
创建后的视图在资源管理器中如图所示:
代码部分
控制器代码
using System;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using WebApplication8.Models;
namespace WebApplication8.Controllers
{
public class UserController : Controller
{
private readonly studentEntities db = new studentEntities();
public ActionResult Index()
{
return View(db.Users.ToList());
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(Users user)
{
if (ModelState.IsValid)
{
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
public ActionResult Edit(int id)
{
var a = db.Users.Find(id);
return View(a);
}
[HttpPost]
public ActionResult Edit( Users user)
{
db.Entry(user).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Users user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Users user = db.Users.Find(id);
db.Users.Remove(user);
db.SaveChanges();
return RedirectToAction("Index");
}
private ActionResult NotFound()
{
throw new NotImplementedException();
}
public ActionResult Details(int id)
{
var a = db.Users.Find(id);
return View(a);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}
主界面代码
@{
ViewBag.Title = "Index";
}
@model IEnumerable<WebApplication8.Models.Users>
<h2>主界面</h2>
<table class="table table-bordered">
<tr>
<td>
<a href="/User/Create" class="btn btn-primary">新建</a>
</td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(t => item.UserId)
</td>
<td>
@Html.DisplayFor(t => item.UserName)
</td>
<td>
@Html.DisplayFor(t => item.Roleld)
</td>
<td>
<a href="/User/Edit/@item.UserId">修改</a>
<a href="/User/Delete/@item.UserId">删除</a>
<a href="/User/Details/@item.UserId">查询</a>
</td>
</tr>
}
</table>
增删改查界面代码
//增添
<form method="post" action="/User/Create">
<table>
<tr>
<td>UserId</td>
<td><input type="text" name="UserId" /></td>
</tr>
<tr>
<td>UserName</td>
<td><input type="text" name="UserName" /></td>
</tr>
<tr>
<td>Number</td>
<td><input type="text" name="Roleld" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交" /></td>
</tr>
</table>
</form>
<div>
<a href="/User/Index">返回</a>
</div>
//删除
<h3>你确定要删除它吗?</h3>
<div>
<table>
<tr>
<td>
@Html.DisplayNameFor(model => model.UserName)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(model => model.UserName)
</td>
</tr>
<tr>
<td>
@Html.DisplayNameFor(model => model.Roleld)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(model => model.Roleld)
</td>
</tr>
</table>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="删除" class="btn btn-danger" /> |
@Html.ActionLink("返回列表", "Index")
</div>
}
</div>
//修改
<h2>修改界面</h2>
<form method="post" action="/User/Edit">
<table>
<tr>
<td>UserId</td>
<td><input type="text" name="UserId" value="@Model.UserId" /></td>
</tr>
<tr>
<td>UserName</td>
<td><input type="text" name="UserName" value="@Model.UserName" /></td>
</tr>
<tr>
<td>RoleId</td>
<td><input type="text" name="Roleld" value="@Model.Roleld" /></td>
</tr>
<tr>
<td><input type="submit" value="提交" /></td>
</tr>
</table>
</form>
//查询
<h2>查询界面</h2>
<form method="post" action="/User/Details">
<table class="table table-bordered">
<tr>
<td>
@Html.DisplayFor(t => t.UserId)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(t => t.UserName)
</td>
</tr>
<tr>
<td>
@Html.DisplayFor(t => t.Roleld)
</td>
</tr>
</table>
</form>
<div>
<a href="/User/Index">返回</a>
</div>
部分效果截图
错误总结
1.增删改查时需要注意Roles表中的RoleId数据,执行操作的数据必须在RoleId数据的基础之上。
列举如下:例如,如图Roles表中RoleId列没有17这个数据,此时在Users表中执行RoleId的增删改查操作如果是17将会报错。即在执行Users表中数据的操作时将受到Roles表中RoleId列的约束。
2.添加视图时必然会出现User文件是空的情况,此时布局页不能找到User文件,这时需要手动输入User文件的路径。