MVC5+EF6 基本框架介紹並搭建 01


首先介紹一下MVC結構模式

MVC(Model-View-Controller)是Model-View-Controller的縮寫,是一種軟件設計的典范,也是一種框架模式.

優點:

1,重用性,多個視圖可以共用一個Model

2,解耦,因為MVC每個部分都是獨立存在的,改變一個並不會影響其他的部件等..

3,可維護性,遵從MVC規則去划分每一個部分的職責,可以十分容易的找到並維護你想要操作的數據

缺點:

1,復雜性,MVC每個部分都分得很清晰,如M負責存儲/提供數據,V則負責顯示等,簡單的項目遵從MVC的規則則會讓代碼量大大增加

2,視圖對Model訪問效率不足,依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能。

3,目前,一般高級的界面工具或構造器不支持MVC架構。

 

用戶在View中操作/輸入數據->Controller中接收到數據並處理后與Model對話,將用戶想要的數據存儲起來,返回Controller后處理完畢將數據返回到View中呈現

Model(模型):充當着兩個角色.1,保存數據(原有的數據) 2,處理邏輯數據

View(視圖):展示數據,提供操作給用戶的UI

Controller(控制器):核心之一,用來接收用戶的輸入並處理,與Model對話,.選擇需要呈現的視圖

簡單的搭建一個asp.net MVC的架構

搭建平台:VS2017

打開VS,新建一個解決方案后向解決方案點擊右鍵->添加新項目->選中左側的Web->選擇第一個(ASP.NET WEB 應用程序),然后新建一個名字(我的是ShopCar)

 

點擊確認后,就會出現模板的選擇(VS2015及以上都會出現)

以空模板為事例,勾選下方的MVC,點擊確定后,在解決方案資源管理器中可以看到已經生成一個最基礎的MVC框架.空的模板不包含附帶的文件(如果你在模板中選擇MVC,將會附帶Script文件夾和Content文件夾,里面有Jquery和bootstrap)

開頭說到,View是通過Controller選擇呈現的,這里說下View是怎么和Controller進行關聯的.首先在Controller中新建一個控制器,右鍵Controllers的文件夾->添加->控制器

 

選擇第一個MVC 5 空的控制器(包含讀寫操作的MVC 5控制器是已經把基架寫好的,我們可以用空的一步一步去完善,所以沒必要選擇包含讀寫的控制器),選擇添加后會彈出一個窗口,輸入控制器的名稱(控制器名稱帶有Controller,不要刪除,這是用於識別控制器的關鍵字)

以Property為例子,選擇添加后,控制器添加就成功了

控制器的名稱為"Property",非"PropertyController",控制器關聯着Views下的文件夾,如:剛新添加的Property控制器,對應Views下Property文件夾,而控制器里面的方法名則默認綁定Views中Property文件夾下的視圖名

所以在Views中添加一個名為Property的文件夾(在VS2017中,添加了一個控制器系統將會自動的幫你在Views下新建一個同名的文件夾作為對應),右鍵Views->添加->新建文件夾->輸入名稱"Property",在Property文件夾中右鍵添加->視圖,取名為Propertys,把下方的"使用布局頁"去掉(如果勾選了之后相當於是一個分部頁,嵌套在模板里,這里沒有使用到模板,所以作為主頁面),添加完后將Property控制器里默認的Index()方法改成Propertys,這樣控制器和視圖就綁定了在一起

點擊添加后就在Property的文件夾下生成了名為Propertys的視圖

 我們可以在視圖中右鍵->轉到控制器來查看該視圖所屬的控制器,方便我們對其進行操作(VS2012可能不支持該跳轉功能),回到控制器,在所屬該視圖的方法中定義一個字符串並返回在視圖中

 

這里將控制器中Proeprtys的方法改變了一下,之前是Return View(),現在改成了Return Content();

Return Content()的方法是用來返回字符內容呈現在界面上

Return View()是返回視圖,因為該方法的名字和視圖匹配后執行起來會自動的選擇該方法名的視圖,所以會在匹配的視圖(也就是Proeprtys.cshtml)中返回一串內容

 

重新生成之后執行,可能F5執行之后,頁面顯示的是VS自帶IIS的路徑,並不是你視圖的路徑

 

將localhost:xxxx 改成 localhost:xxxx/{controller}/{action}  controller代表你的控制器名,action代表你要執行控制器的那個方法(方法名),由控制器去匹配你的視圖呈現,即 localhost:xxxx/property/propertys

URL(路由)的規則則在解決方案中可以找到並進行修改,在App_Start文件夾下的RouteConfig文件

在這里面我們可以看到路由的規則組成條件,name是路由的名字,url是路由的組成,正如剛剛說的 localhost:xxx/{controller}/{action},在url中可以看到/{id},這表明如果有參數的話直接跟在url后面而不用以前的傳值方式?id=123,有了這個路由之后我們的傳參方式可以改為localhost:xxx/xxx/xxx/1(在defaults:中 id 被配置成了參數 id = UrlParameter.Optional,所以id是作為參數傳遞)

了解了之后,我們輸入網址http://localhost:xxxx/property/propertys

OK,控制器已經和視圖綁定了在一起,並正確的獲取了從控制器中傳遞的值.

總結:MVC模式可以很好的為整個項目的領域區分開來,讓自己可以更專注於在自己的領域中,如View,你不需要知道我在Controller怎么去處理輸入,你只需要接收我返回的值,呈現給用戶看,反之也一樣.所以Controller更像是Views的工作后台

PS:這里沒有說到Model,因為Model需要和數據庫做交互,在下次會接着講.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM