MVC框架概述
來源:程序員人生 發布時間:2015-01-09 09:01:39 閱讀次數:4364次
2014.11.8我們完成為時兩月的中級軟考準備,沒有過剩的時間去放松、文娛,緊接著迎來了我進入提高班以來真實的1次項目實踐--高效平臺。
我做的是基礎系統,就是1個算是幕后英雄的角色吧!考試系統、評教系統需要我們的數據、同時新生入學系統由我們來保護,所以說任務艱巨而重要,這1節最重要的就是說軟件開發中的第1項內容:知識補充---MVC
何謂MVC(Model View Controller):M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同1個程序可使用不同的表現情勢。比如統計學生數據可以分別用柱狀圖、餅形圖來表示。C存在的目的則是確保M和V的同步,1旦M改變,V應當同步更新。
它的具體操作進程以下所示:
模型(Model) “數據模型”(Model)用于封裝與利用程序的業務邏輯相干的數據和對數據的處理方法。“模型”有對數據直接訪問的權利,例如對數據庫的訪問。“模型”不依賴“視圖”和“控制器”,也就是說,模型不關心它會被如何顯示或是如何被操作。但是模型中數據的變化1般會通過1種刷新機制被公布。為了實現這類機制,那些用于監視此模型的視圖必須事前在此模型上注冊,從而,視圖可以了解在數據模型上產生的改變.
視圖(View) 視圖層能夠實現數據有目的的顯示(理論上,這不是必須的)。在視圖中1般沒有程序上的邏輯。為了實現視圖上的刷新功能,視圖需要訪問它監視的數據模型(Model),因此應當事前在被它監視的數據那里注冊。
控制器(Controller) 控制器起到不同層面間的組織作用,用于控制利用程序的流程。它處理事件并作出響應。“事件”包括用戶的行動和數據模型上的改變。
下面用1個例子來對MVC進行解釋:
創建1個項目以下圖所示:

右擊Controller文件夾,新建1空Controller,命名為HelloWorld,將代碼改成以下:
public class HelloWorldController : Controller
{
public string Index()
{
return "Hello world";
}
public string Hello()
{
return "Hello everyone";
}
public string Hello2(string name)
{
return "Hello to you " + name;
}
}
右擊添加視圖:
在新建的視圖中添加代碼:(結合了css+div)
@using 自動導入程序集.Models
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<style type="text/css">
#tblist {
border: 1px solid #0094ff;
width: 600px;
margin: 10px auto;
border-collapse: collapse;
}
#tbList th, td {
border: 1px solid #0094ff;
padding: 10px;
}
</style>
<script type="text/javascript">
function del(id) {
if (confirm("您肯定要刪除嗎?親~~")) {
window.location = "/home/del" + id;
}
}
</script>
</head>
<body>
<table>
<tr>
<th>id</th>
<th>標題</th>
<th>分類</th>
<th>狀態</th>
<th>時間</th>
<th>操作</th>
</tr>
<!--遍歷Action方法,設置給ViewData集合數據,生成HTML代碼-->
@foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
{
<tr>
<td>@a.AId </td>
<td>@a.ATitle </td>
<td>@a.ACate </td>
<td>@a.AStatu </td>
<td>@a.AAddtime </td>
<td>
<a href="javascript:del(@a.AId)">刪除</a>
<a href="/home/modify/@a.AId">改</a>
</td>
</tr>
}
</table>
@foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
{
}
</body>
</html>
接下來來實現1個基本的增刪改的功能。假定我們要對博客的基本信息進行管理,首先需要定義1個Model類型,新建1個Model,代碼以下:
namespace HelloWorld.Models
{
public class BlogArticle
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet<movie> Movies { get; set; }
}
}
接下來,我們新建1個Movie的Controller,使用ef(EntityFramework)來存取數據,以下配置:
通過EF可以動態的為你創建數據庫,果Model文件產生了變化,例如添加了1個字段,網頁就會報錯,要解決有兩種方案,1是調用Database.SetInitializer方法來自動重建數據庫,2是手動修改數據庫表。第1種方法雖然簡單但是會致使已有的數據丟失,他會重建全部數據庫。但是在開發早期非常合適使用。在這里先采取第1種方案。具體方法是,在model中新建1個類繼承自DropCreateDatabaseIfModelChanges類。在其中可以加上可選的初始化數據的代碼,然后在Global.asax中將這個對象注冊下。
對mvc的理解僅僅局限在實現上,認識還很浮淺,希望和大家交換!
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈