讲解:
1.首先显示展示用户数据的页面 即Home/Index页面。
2.在页面上添加 编辑 列,附加超链接,点击后会传送Id属性到UserInfo/Edit方法,显示编辑页面ShowDetail。
3.在编辑页面修改用户数据,点击保存,提交到UserInfo/Edit方法 ([HttpPost]属性)
4.在控制器UserInfo/Edit中用EF保存用户数据。
主要代码:
UserInfoController:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApp.Models;
namespace WebApp.Controllers
{
public class UserInfoController : Controller
{
//
// GET: /UserInfo/
NCUTBookShopDBEntities db = new NCUTBookShopDBEntities();
public ActionResult Index()
{
var userInfoList = db.UserInfo.Where<UserInfo>(u => true).ToList();
ViewData["list"] = userInfoList;
return View();
}
public ActionResult ShowDetail(int id)
{
var userInfo = db.UserInfo.Where<UserInfo>(u => u.Id == id);
ViewData["info"] = userInfo;
return View();
}
public ActionResult Delete(int id)
{
//UserInfo userInfo = new UserInfo(){Id=id};
var userInfo = db.UserInfo.Where(u => u.Id == id).FirstOrDefault();
if (userInfo != null)
{
db.Entry(userInfo).State = System.Data.EntityState.Deleted;
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return Content("编号错误");
}
}
public ActionResult Edit(int id)
{
var userInfo = db.UserInfo.Where(u => u.Id == id).FirstOrDefault();
if (userInfo != null)
{
ViewData["userInfo"] = userInfo;
}
else
{
return Content("编号错误");
}
return View();
}
[HttpPost]
public ActionResult Edit(UserInfo info)
{
db.Entry(info).State = System.Data.EntityState.Modified;
if(db.SaveChanges()>0)
return RedirectToAction("Index");
else
{
return Content("修改失败");
}
return RedirectToAction("Index");
}
}
}
视图层:UserInfo/Edit
@using WebApp.Models
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Edit</title>
</head>
<body>
<div>
<form method="POST" action="/UserInfo/Edit">
<table>
@{
UserInfo userInfo = (UserInfo)ViewData["userInfo"];
<tr>
<td>用户名:</td>
<td><input type="text" name="UserName" value="@userInfo.UserName" /></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="Password" value="@userInfo.Password" /></td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" name="Email" value="@userInfo.Email" /></td>
</tr>
}
<input type="hidden" name="Id" value="@userInfo.Id"/>
</table>
<input type="submit" value="保存" />
</form>
</div>
</body>
</html>
View视图 ShowDetail:
@using WebApp.Models
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>ShowDetail</title>
</head>
<body>
<div>
<table>
<tr><td>用户名</td><td>密码</td></tr>
@{
UserInfo info = (UserInfo)ViewData["info"];
<tr>
<td>@info.UserName</td>
<td>@info.Password</td>
</tr>
}
</table>
</div>
</body>
</html>
在展示用户数据页面 单机删除超连接,可以直接删除数据
@using System.Collections.Generic
@using WebApp.Models
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript">
window.onload = function () {
var deleteLinks = document.getElementsByClassName("delLink");
for (var i = 0; i < deleteLinks.length; i++) {
deleteLinks[i].onclick = function () {
if (!confirm("确定要删除吗?")) {
return false;
}
}
}
}
</script>
</head>
<body>
<div>
<table>
<tr><th>编号</th><th>用户名</th><th>密码</th><th>详细</th><th>删除</th><th>编辑</th></tr>
@foreach (UserInfo info in (List<UserInfo>) ViewData["list"])
{
<tr>
<td>@info.Id</td>
<td>@info.UserName</td>
<td>@info.Password</td>
<td><a href="/UserInfo/ShowDetail?Id=@info.Id">详细</a></td>
<td><a href="/UserInfo/Delete?Id=@info.Id" class="delLink">删除</a></td>
<td><a href="/UserInfo/Edit?Id=@info.Id" >编辑</a></td>
</tr>
}
</table>
</div>
</body>
</html>