【MVC】.NET實踐(三)—對資料庫的資料進行刪除與修改
阿新 • • 發佈:2018-12-18
在主介面新增修改和刪除的超連結(Index.cshtml)
<table id="tbList"> <tr> <th>id</th> <th>姓名</th> <th>狀態</th> <th>操作</th> </tr> @*@Html.Raw(ViewBag.HtmlStr)*@ @foreach (BlogUser a in ViewData["DataList"] as List<BlogUser>) { <tr> <td>@a.Id</td> <td>@a.Name</td> <td>@a.State</td> <td> <a href="/home/modify/@a.Id">修改</a> <a href="javascript:del(@a.Id)">刪除</a> </td> </tr> } </table>
一、資料的刪除
HomeController
HomeController中新增一個Delete方法
public ActionResult Delete(int id) { try { //1.建立要刪除的物件 BlogUser user = new BlogUser() { Id = id }; //2.將物件新增到EF管理容器 db.BlogUser.Attach(user); //3.將物件包裝類的狀態 標誌位刪除狀態 db.BlogUser.Remove(user); //4.跟新到資料庫 db.SaveChanges(); return RedirectToAction("Index", "Home"); } catch (Exception ex) { return Content("刪除失敗"+ex.Message); } }
Index.cshtml
在主介面Index.cshtml中新增js程式碼,轉向home下的delete方法,為了友好一些,確認是否刪除
<script type="text/javascript">
function del(id) {
if (confirm("您確定要刪除嗎?")) {
window.location = "/home/delete/" + id;
}
}
</script>
二、資料的修改
HomeController.cs
(1)顯示要修改的資料
[HttpGet]
public ActionResult Modify(int id)
{
//1.根據id查詢資料庫,返回的集合中 拿到第一個實體物件
BlogUser user = (from a in db.BlogUser where a.Id == id select a).FirstOrDefault();
//使用View的建構函式,將資料傳遞給檢視上的名為Model的屬性
return View(user);
}
(2)執行修改
[HttpPost]
public ActionResult Modify(BlogUser blogUser)
{
try
{
//db.Configuration.ValidateOnSaveEnabled = false;
//1.將實體物件加入EF物件容器中,並獲取偽包裝類物件
DbEntityEntry<BlogUser> entry = db.Entry<BlogUser>(blogUser);
//2.將包裝類物件的狀態設定為unchanged
entry.State = System.Data.Entity.EntityState.Unchanged;
//3.設定 被改變的屬性
entry.Property(a => a.Name).IsModified = true;
entry.Property(a => a.State).IsModified = true;
//4.提交到資料庫
db.SaveChanges();
//5.更新成功,則命令瀏覽器重定向到Home/Index 方法
return RedirectToAction("Index", "Home");
}
catch (Exception ex)
{
return Content("修改失敗" + ex.Message);
}
}
由於方法名一樣,所以在方法前面用[HttpPost]和[HttpGet]來區分
Modify.cshtml
需在最上方引用空間:@model MVC練習.Models.BlogUser
@using (Html.BeginForm("Modify", "Home", FormMethod.Post))
{
<table id="tbList">
<tr>
<td colspan="2">修改 @Html.HiddenFor(a=>a.Id)</td>
</tr>
<tr>
<td>姓名:</td>
<td>@Html.TextBoxFor(a => a.Name)</td>
</tr>
<tr>
<td>狀態:</td>
<td>@Html.TextBoxFor(a => a.State)</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="確認修改" />@Html.ActionLink("返回", "Index", "Home")</td>
</tr>
</table>
}
佈局程式碼
<style type="text/css">
#tbList {
border: 1px solid #0094ff;
width: 400px;
margin: 10px auto;
border-collapse: collapse;
}
#tbList th, td {
border: 1px solid #0094ff;
padding: 10px;
}
</style>
結果