天天看點

MVC5 + EF6 + Bootstrap3 (13) 檢視詳情、編輯資料、删除資料

<a href="#start">前言</a>

<a href="#addlink">添加連結</a>

<a href="#details">檢視詳情</a>

<a href="#edit">編輯資料</a>

<a href="#delete">删除資料</a>

<a href="#End">結尾</a>

所謂萬事開頭難,前面用兩節介紹了查詢頁面,一節介紹了建立資料。由于前面做了大量的鋪墊,本節就能順利的将檢視詳情、編輯資料、删除資料在一節中全部介紹給大家。前後這幾節加起來就完成了一個簡單資訊系統的增删改查(CRUD)的所有操作。

要進行這三個操作,首先在查詢頁面的每一條記錄後面添加對應的連結。代碼如下:

上面代碼對應着資料清單的一行,其中黃色的部分就是我們添加的連結。這三個連結對應三個不同的操作,他們都需要ID作為參數來确定操作的是哪一條資料,改動後的頁面顯示如下:

MVC5 + EF6 + Bootstrap3 (13) 檢視詳情、編輯資料、删除資料

紅框部分就是我們添加的連結。

檢視詳情對應Details連結。點選連結之後會請求目前Contoller,也就是CompanyController的Details Action。那麼我們就在~\Controllers\CompanyController.cs下寫這個Action。代碼如下:

第3-6行表示如果通路這個Actions時沒有給參數id則傳回BadRequest錯誤。如下圖所示,位址欄裡面沒有給出ID,傳回Bad Request錯誤。

MVC5 + EF6 + Bootstrap3 (13) 檢視詳情、編輯資料、删除資料

第7-11行表示如果根據id沒有找到對應的資訊則傳回HttpNotFound錯誤,如下圖所示:

MVC5 + EF6 + Bootstrap3 (13) 檢視詳情、編輯資料、删除資料

第12行,如果根據id找到了對應的資訊則用View顯示。

在~Views\Company\下建立Details.cshtml視圖,寫入代碼如下:

代碼中用DisplayNameFor函數顯示屬性名,用DisplayFor函數顯示屬性值。

頁面用&lt;dl&gt;&lt;dt&gt;&lt;dd&gt;和Bootstrap的"dl-horizontal"類布局頁面,使每一個屬性名和屬性值占一行,顯示效果如下:

MVC5 + EF6 + Bootstrap3 (13) 檢視詳情、編輯資料、删除資料

第37行給出了編輯此頁面的連結。38行給出傳回查詢頁面的連結。

在~\Controllers\CompanyController.cs中加入用來進入Edit頁面的Action代碼如下:

看起來眼熟?沒錯,和Details的Action是一模一樣的,這裡就不重複了。

下面寫View。在~\Views\Company\下建立Edit.cshtml視圖,寫入代碼如下:

第12行用HiddenFor函數儲存目前要修改的記錄的ID以便送出後找到對應的記錄進行更新。

頁面顯示如下:

MVC5 + EF6 + Bootstrap3 (13) 檢視詳情、編輯資料、删除資料

接下來我們來寫送出更新資料之後需要通路的Action,在~\Controllers\Company.cs中加入用Post方法通路的Edit Action,代碼如下:

不同點是第7行,根據獲得的worker執行個體,在資料清單中找到對應記錄,更新其值,并設定其狀态為Modified。最後将改動儲存到資料庫并跳轉回資料查詢頁面。

删除資料不需要頁面顯示資料,隻需在CompanyController下加入一個Delete Action删除資料即可,代碼如下:

第5行建立一個隻有ID被指派的worker執行個體。然後第6行根據這個執行個體的ID在資料庫中找到對應的資料,設定其狀态為Deleted已删除,第7行執行删除操作。

如果删除成功則在第13行跳轉回查詢頁面,如果失敗則跳轉回查詢頁面并傳遞兩個參數傳遞失敗記錄的ID及saveChangesError = true。根據這兩個傳遞的參數可以在查詢頁面寫出錯誤資訊。這裡就不較長的描述了。

這樣點選删除連結就能在查詢頁面看到那條資料被删除了。

到此,我們完成了對一個簡單資料模型的增删改查操作。不過其中還有很多知識點沒有較長的描述,比如資料驗證、EF操作資料的函數、View中的各種不同的Http響應等等。後面會一一詳細介紹。

覺得有用就推薦下吧!

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如有問題或建議,請多多賜教,非常感謝。