這裡我們建立一個簡單的ASP.NET MVC實踐應用,對News資料庫的News表進行CRUD。
一、準備工作:
在SQLServer中建立News資料庫News表,然後建立在Models檔案夾中加入NewsData.dbml檔案,将News表拖入到dbml檔案中
二、建立News
1、添加視圖
在Views檔案夾中加入News檔案夾,然後在News檔案夾上單擊右鍵-》添加-》View,然後按如下選擇(注意需要再添加前先編譯,不然無法顯示Model中的類)
生成的代碼如下:(略作修改,将id行去掉)
<a></a>
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
Code
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcCRUDDemo.Models.News>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Title">Title:</label>
<%= Html.TextBox("Title") %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
<label for="Content">Content:</label>
<%= Html.TextBox("Content") %>
<%= Html.ValidationMessage("Content", "*") %>
<label for="Author">Author:</label>
<%= Html.TextBox("Author") %>
<%= Html.ValidationMessage("Author", "*") %>
<label for="CreateTime">CreateTime:</label>
<%= Html.TextBox("CreateTime") %>
<%= Html.ValidationMessage("CreateTime", "*") %>
<label for="Country">Country:</label>
<%= Html.TextBox("Country") %>
<%= Html.ValidationMessage("Country", "*") %>
<input type="submit" value="Create" />
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
第一行中的Inherits="System.Web.Mvc.ViewPage<MvcCRUDDemo.Models.News>"表示這個View的Model為MvcCRUDDemo.Models.News。另:輸入的驗證我們會在系列3中講到
2、添加Controler
右鍵單擊Controller檔案夾添加-》Controller
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
public ActionResult Create()
{
News news = new News { CreateTime = DateTime.Now };
return View(news);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(News news)
NewsDataDataContext dc = new NewsDataDataContext();
dc.News.InsertOnSubmit(news);
dc.SubmitChanges();
return RedirectToAction("NewsList");
第一個無參的Create方法是當通路/News/Create時調用,第二個以news做為參數的Create方法是進行post送出時會調用。
三、讀取News表中的内容:
1、添加清單視圖
然後在View Content下拉框中選擇List
生成的View代碼為:
省略...
2、添加清單Controller
右鍵單擊Controller檔案夾添加-》Controller,然後添加NewsList()方法,代碼如下
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
public ActionResult NewsList()
IEnumerable<News> newsList = dc.News;
return View(newsList);
然後修改一下Global檔案:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "News", action = "NewsList", id = "" } // Parameter defaults
);
然後就可以浏覽defaul.aspx檢視結果了。
3、添加details視圖
略
5、添加Details的Controller
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
public ActionResult Details(int id)
return View(dc.News.First(n => n.id == id));
四、編輯News表内容
1、添加Edit視圖
2、添加編輯的Controler
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
public ActionResult Edit(int id)
return View(dc.News.First(n => n.id == id));
public ActionResult Edit(int id, FormCollection formValues)
News news = dc.News.First(n => n.id == id);
UpdateModel(news);
return RedirectToAction("Details", new { id = id });
隻有一個參數的Edit是通路News/Edit/5時調用的方法,而另一個是當送出時調用的方法。送出時調用的Edit方法需要注意的就是UpdateModel方法,這個方法就是利用反射來将從用戶端頁面收集回來的資訊更新到實體類中,是以這個地方最簡單的方式就是遵守mvc的預設規則,也就是頁面端得input的名字要和實體相同。
五、删除News表中的内容
1、添加删除視圖
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
Delete
<p>
你确認要删除
<%=Html.Encode(Model.Title) %>麼? </i>
</p>
<% using (Html.BeginForm())
{ %>
<input name="confirmButton" type="submit" value="确認" />
2、添加删除Controler
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQnchR3UrN2bsJEZlRmbhBHeF9CXzJ3b0F2YpRmbJdmbp5WasRXdP9CXzV2Zh1WSvwVbvNmLzd2bsJmbj5yd3d3Lc9CX6MHc0RHaiojIsJye.gif)
public ActionResult Delete(int id)
public ActionResult Delete(int id, string confirmButton)
var news = dc.News.First(n => n.id == id);
dc.News.DeleteOnSubmit(news);
六、源碼下載下傳
資料庫需要自己添加,另外這裡的代碼為了分步講解友善,有些重複的地方沒有進行優化
<a href="http://files.cnblogs.com/nuaalfm/MvcCRUDDemo.zip">源碼</a>
本文轉自 你聽海是不是在笑 部落格園部落格,原文連結:http://www.cnblogs.com/nuaalfm/archive/2009/10/26/1590064.html ,如需轉載請自行聯系原作者