作者:
GWPBrian 來源:
博客園 發布時間: 2010-01-19 23:18 閱讀: 4545 次 推薦: 1
原文鏈接 [收藏]
系列文章導航:
學習 ASP.NET MVC (第一回)理論篇
學習 ASP.NET MVC (第二回)實戰篇
學習 ASP.NET MVC (第三回)實戰篇
學習 ASP.NET MVC (第四回)實戰篇
學習 ASP.NET MVC (第五回)理論篇
我們繼續ASP.NET MVC之旅。上文中我們實現了對User信息的展示,詳細信息的列表,還有錯誤頁的實現。本文繼續完成添加,修改,刪除的操作。
首先我們來完成Controller的代碼:
Code
//
// GET: /Users/Edit/1
public ActionResult Edit( int id)
{
Users users = usersrepository.GetUsers(id);
return View(users);
}
//
// POST: /Users/Edit/1
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit( int id, FormCollection formValues)
{
Users users = usersrepository.GetUsers(id);
try
{
UpdateModel(users);
usersrepository.SaveUser();
return RedirectToAction( " Details " , new { id = users.UserID });
}
catch
{
foreach (var issue in users.GetRuleViolations())
{
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
}
return View(users);
}
//
// GET : /Users/Create
public ActionResult Create()
{
Users user = new Users ();
return View(user);
}
// POST: /Users/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Users users)
{
try
{
UpdateModel(users);
usersrepository.AddUser(users);
usersrepository.SaveUser();
return RedirectToAction( " Details " , new { id = users.UserID });
}
catch
{
foreach (var issue in users.GetRuleViolations())
{
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
return View(users);
}
}
//
// HTTP GET: /Dinners/Delete/1
public ActionResult Delete( int id, string BtnConfirm)
{
Users users = usersrepository.GetUsers(id);
if (users == null )
{
return View( " NotFound " );
}
else
{
usersrepository.DelUser(users);
usersrepository.SaveUser();
return View( " Delete " );
}
}
我們定義了編輯,新建,刪除的Controller。
接著,我們開始創建視圖模板,步驟與前面創建視圖模板一樣。如圖所示:
VS自動的為我們生成了模板,在瀏覽器中訪問下我們的編輯頁面:
點擊 Save 保存按鈕,將觸發表單提交到/users/Edit/1 網址,并通過 HTTP POST 提交 表單中的值。下面,我們開始實現 HTTP POST 的 Edit action 方法 – 負責處理保存操作。
這里我們將 action 方法添加[AcceptVerbs] 屬性后,ASP.NET MVC 根據進來的 HTTP 動作,自動分發請求給合適的 action 方法。HTTP POST 請求/Dinners/Edit/[id] 將有上述 Edit 方法負責處理,然而所有其他的HTTP 請求/Dinners/Edit/[id] 將有之前定義的 Edit 方法負責(該方法沒有[AcceptVerbs]屬性)。也就是上面Controller中定義的Edit重載方法。
理解 ModelState 和驗證 HTML 輔助方法
Controller類有一個 ModelState 屬性集合,可以用來提示傳遞到視圖的 model對象是否有錯誤。ModelStat中 Error 記錄識別模型屬性的名稱和錯誤信息,并允許指定友好的錯誤信息。HTML 輔助方法,如 Html.TextBox(),在輸出內容時,會檢查 ModelState 集合。如果發現該屬性有異常或錯誤,將呈現用戶輸入的內容和 CSS 錯誤類。
接下來我們來添加Create視圖模板:
運行程序:
和Edit模板的實現功能類似。我們需要將Create 的方法聲明[AcceptVerbs] 屬性。方法中創建新的 Dinner 對象,并使用 UpdateModel() 輔助方法(就像 Edit 方法一樣),將表單傳遞過來的值賦給 users對象。接著,添加 users對象到 UsersRepository,并持久化到數據庫,并重定向到 Details action 方法。
最后的,我們來實現刪除的功能。添加Delete模板:
action 方法試圖檢索將要刪除的 Users對象。如果 users對象存在,就呈現該 users對象的視圖。如果對象不存在(或者已經刪除了),將返回一個 NotFound 的視圖,之前我們已經創建了這個視圖。
這里我們可以簡單的對頁面做一些修改,提示用戶刪除成功等信息。
至此,一個簡單的用戶管理就完成了,我們可以通過ASP.NET MVC實現對用戶的添加,刪除,修改,信息的顯示等功能。新手可以參看實例學習MVC,在學習的效率上會有很大的幫助。
文章列表