• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    .NET Web開發(fā)之.NET MVC框架介紹

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:39:06
    文檔

    .NET Web開發(fā)之.NET MVC框架介紹

    .NET Web開發(fā)之.NET MVC框架介紹:MVC概念 MVC是一種架構(gòu)設(shè)計模式,該模式主要應(yīng)用于圖形化用戶界面(GUI)應(yīng)用程序。那么什么是MVC?MVC由三部分組成:Model(模型)、View(視圖)及Controller(控制器)。 Model即應(yīng)用程序的數(shù)據(jù)模型。任何應(yīng)用程序都離不開數(shù)據(jù),數(shù)據(jù)可以存儲在數(shù)據(jù)庫中、磁
    推薦度:
    導(dǎo)讀.NET Web開發(fā)之.NET MVC框架介紹:MVC概念 MVC是一種架構(gòu)設(shè)計模式,該模式主要應(yīng)用于圖形化用戶界面(GUI)應(yīng)用程序。那么什么是MVC?MVC由三部分組成:Model(模型)、View(視圖)及Controller(控制器)。 Model即應(yīng)用程序的數(shù)據(jù)模型。任何應(yīng)用程序都離不開數(shù)據(jù),數(shù)據(jù)可以存儲在數(shù)據(jù)庫中、磁

    MVC概念

    MVC是一種架構(gòu)設(shè)計模式,該模式主要應(yīng)用于圖形化用戶界面(GUI)應(yīng)用程序。那么什么是MVC?MVC由三部分組成:Model(模型)、View(視圖)及Controller(控制器)。

    Model即應(yīng)用程序的數(shù)據(jù)模型。任何應(yīng)用程序都離不開數(shù)據(jù),數(shù)據(jù)可以存儲在數(shù)據(jù)庫中、磁盤文件中,甚至內(nèi)存中。Model就是對這些數(shù)據(jù)的抽象,不論數(shù)據(jù)采取何種存儲形式,應(yīng)用程序總是能夠通過Model來對數(shù)據(jù)進(jìn)行操作,而不必關(guān)心數(shù)據(jù)的存儲形式。數(shù)據(jù)實體類就是常用的一種Model。例如,一個客戶管理應(yīng)用程序使用數(shù)據(jù)庫來存儲客戶數(shù)據(jù),數(shù)據(jù)庫表中有一個客戶表Customer,相應(yīng)的程序中一般會建立一個數(shù)據(jù)實體類Customer來與之對應(yīng),這個實體類即使客戶表的Model。

    View是應(yīng)用程序的界面。用戶通過View來操作應(yīng)用程序,完成與程序的交互。View提供了可視化的界面來顯示Model中定義的數(shù)據(jù),用戶通過View來操作數(shù)據(jù),并將對Model數(shù)據(jù)操作的結(jié)果返回給用戶。在桌面應(yīng)用程序中,View可能是一個或多個Windows窗體。在Web應(yīng)用程序中,View是由一系列網(wǎng)頁構(gòu)成,在ASP.NET網(wǎng)站中即為.aspx頁面。

    Controller 定義了程序的應(yīng)用邏輯。用戶通過View發(fā)送操作命令給Controller,由Controller按照程序設(shè)計的邏輯來更新Model定義的數(shù)據(jù),并將操作結(jié)果通過View返回給用戶。

    MVC的歷史

    MVC這一概念最早由美國教授Trygve Reenskaug于1979年提出。1988年MVC這一設(shè)計模式正式在《A Cookbook for Using the Model-View-Controller User Interface Paradigm in Smalltalk -80》一書中提出。伴隨著微軟Windows操作系統(tǒng)的迅速發(fā)展與普及,圖形化用戶界面應(yīng)用程序逐漸成為主流,很多編程語言都出現(xiàn)了MVC框架,以方便開發(fā)人員使用該模式來設(shè)計應(yīng)用程序。這些框架中大部分都是針對Web應(yīng)用程序。

    .NET Web開發(fā)中MVC設(shè)計模式的實現(xiàn)

    ASP.NET 1.x中使用了CodeBehind技術(shù),徹底終結(jié)了傳統(tǒng)ASP程序開發(fā)的夢魘:程序邏輯與HTML界面元素混雜在一起。CodeBehind技術(shù)將代表程序界面(View)的.aspx文件與邏輯(Controller)代碼.vb/.cs文件的分離即是一種MVC式的設(shè)計。ASP.NET 2.0中又出現(xiàn)了CodeBeside技術(shù),即一個.aspx文件可以有多個.vb/.cs文件,這又方便了界面與邏輯代碼的進(jìn)一步分離。

    2008年3月微軟發(fā)布了針對ASP.NET 3.5 的MVC框架 (Preview 2 版本)。這是一個真正意義上的ASP.NET MVC框架。該框架可以說是對之前為開發(fā)人員所熟悉的基于Web Form的應(yīng)用程序開發(fā)方式的"顛覆"。變化可謂"震撼":

    1. 使用URL Routing技術(shù):Web程序的URL不再是指向具體的物理頁面.aspx,而是指向某個Controller的某個方法。一個典型的MVC架構(gòu)的程序,其URL可能如下所示:

    http://www.mysite.com/Customer/Index

    使用該MVC架構(gòu)的程序其URL不必有文件擴(kuò)展名。上面這個URL中的Customer即為Controller的名字。而Index是Customer定義的一個方法名。

    2. Web程序的界面.aspx不再使用服務(wù)器端的Form:

    <asp: form runat="server"></form>

    那么與服務(wù)器端的Form相關(guān)的Postback以及頁面生命周期的事件也不存在了。

    3. 頁面中不再有View State。MVC下將不能使用View State來存儲程序狀態(tài)信息。

    4. 不再提供依賴于服務(wù)器端Form的服務(wù)器控件事件,開發(fā)人員熟悉的Button_Clicked事件在MVC下將不再需要。

    NET MVC示例

    安裝完 ASP.NET MVC Preview 2后,VS2008中會添加一個新的項目模板"ASP.NET MVC Web Application", 如下圖所示

        新建該項目后, VS2008自動生成項目的文件結(jié)構(gòu)如下, MVC三個組成部分各有一個文件夾來存儲各自的程序文件。

    前面提到的URL Routing即在Global.asax.cs中設(shè)置:
    代碼如下:
    public class GlobalApplication : System.Web.HttpApplication
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                // 注意: IIS7以下的IIS版本需將URL格式設(shè)置為 "{controller}.mvc/{action}/{id}" to enable           

                routes.Add(new Route("{controller}.mvc/{action}/{id}", new MvcRouteHandler())
                {
                    Defaults = new RouteValueDictionary(new { action = "Index", id = "" }),
                });//設(shè)置URL Routing格式

                routes.Add(new Route("Default.aspx", new MvcRouteHandler())
                {
                    Defaults = new RouteValueDictionary(new { controller = "Customer", action = "Index", id = "" }),
                });//設(shè)置默認(rèn)URL指向Customer Controller的Index方法
            }

            protected void Application_Start(object sender, EventArgs e)
            {
                RegisterRoutes(RouteTable.Routes);
            }
    }

    【代碼1】:Global.asax.cs

    下面來實現(xiàn)Customer 的Model、Controller及View:

    Model: 在項目中的Model文件夾下,新建一個"Linq to SQL Classes",將Northwind數(shù)據(jù)庫中的Customer表拖拽到其設(shè)計視圖中。這樣就完成了Customer對應(yīng)的Model。如圖4

    Controller: 在項目中的Controller文件夾下,新建一個"MVC Controller Class",命名為CustomerContoller.cs。 在此類中添加一個公有方法Index,此方法及為在Global.asax.cs中設(shè)置好的默認(rèn)URL所映射的方法。

    代碼如下:   
     public class CustomerController : Controller
          {
            public void Index(string id)
            {
                Northwind.Models.NorthwindDataContext dc = new Northwind.Models.NorthwindDataContext();
                IList<Northwind.Models.Customer> customers = dc.Customers.Take(10).ToList();//取數(shù)據(jù)庫中的10個Customer記錄
                RenderView("Index", customers);//返回Index View
            }
    }

       
        【代碼2】:CustomerController.cs

        View: 上面Index方法的代碼表示CustomerContoller的Index方法執(zhí)行后,需要返回一個名稱為Index的View,以便將數(shù)據(jù)呈現(xiàn)給用戶。下面來添加這個Index View:在項目的View文件中,新建一個子文件夾Customer。與Customer Controller有關(guān)的View將保存在此文件夾下。新建一個"MVC View Class"并命名為Index.aspx。在前面的RenderView("Index", customers)方法中,customers參數(shù)是Controller傳遞給View所需的數(shù)據(jù),該參數(shù)的類型為IList<Northwind.Models.Customer>。為了在View中方便使用此強類型的數(shù)據(jù),View.aspx.cs使用了如下代碼:注意粗體部分

    代碼如下: 
    public partial class Index : ViewPage<IList<Northwind.Models.Customer>>
        {
    }

       
    【代碼3】:Index.aspx.cs

        View.aspx代碼如下:ViewData這一成員變量的類型及為上面提到的IList<Northwind.Models.Customer>類型。

       
    代碼如下:


    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="Northwind.Views.Customer.Edit" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <div>
            <table>
                <tr>
    <td>Edit</td>           
                <td>Customer ID </td>
                <td>Company Name </td>
                <td>Contact Name </td>
                <td>Contact Title </td>
               </tr>  
                <% foreach (Northwind.Models.Customer customer in ViewData)
                   {%>
                   <tr>
                      <td><a href="Customer.mvc/Edit/<%= customer.CustomerID %>">Edit</a></td><!—URL指向Customer Contoller的Edit方法 -->
                      <td></td>
                      <td>  <%= customer.CustomerID %></td>
                      <td> <%= customer.CompanyName  %></td>
                      <td> <%= customer.ContactName  %></td>
                      <td><%= customer.ContactTitle  %></td>

                   </tr>
                   <%} %>
            </table>
        </div>
    </body>
    </html>

     

     

     

        【代碼4】:Index.aspx

        下面來實現(xiàn)Customer Controller的Edit方法。在CustomerController.cs中添加如下代碼:

    代碼如下:    
    public void Edit(string id)
    {
                Northwind.Models.NorthwindDataContext dc = new Northwind.Models.NorthwindDataContext();
                Customer c = dc.Customers.Single(cus => cus.CustomerID == id);//從數(shù)據(jù)庫中取出參數(shù)id所對應(yīng)的的一個Customer記錄

                RenderView("Edit", c);//返回Edit View
     

        【代碼5】:CustomerController.cs中的Edit方法

        相應(yīng)的在項目中的View/Customer/文件夾下,添加Edit View Edit.aspx:

    代碼如下:
    public partial class Edit : ViewPage<Northwind.Models.Customer>
    {
    }

       
        【代碼6】:Edit.aspx.cs

    代碼如下:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="Northwind.Views.Customer.Edit" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
    <!—下面的 html form 將用戶的輸入提交到Customer Contoller的Update方法 -->
    <%using( Html.Form<Northwind.Controllers.CustomerController>(cc=>cc.Update(ViewData.CustomerID))){ %>
        <div>
           Customer ID: <%= ViewData.CustomerID  %> <br />
           Company Nmae: <%= Html.TextBox("Customer.CompanyName", ViewData.CompanyName) %> <br />
           Contact Name: <%= Html.TextBox("Customer.ContactName",ViewData.ContactName) %><br />
           Contact Title: <%= Html.TextBox("Customer.ContactTitle",ViewData.ContactTitle) %>
        </div>
        <%= Html.SubmitButton("Save") %>
        <%} %>
    </body>
    </html>

       
    【代碼7】:Edit.aspx

        代碼7中使用了MVC框架中的一個幫助類Html。此類可以生產(chǎn)View中常用的界面元素,例如 html form,文本輸入框等。

        下面來實現(xiàn)CustomerController的Update方法:

    代碼如下:     
    public void Update(string id)
            {
                Northwind.Models.NorthwindDataContext dc = new NorthwindDataContext();
           //從數(shù)據(jù)庫中取出參數(shù)id所對應(yīng)的的一個Customer記錄:
                Customer cust = dc.Customers.Single(c => c.CustomerID == id);
          //將Edit View中的用戶的更改賦值到cust對象:
                BindingHelperExtensions.UpdateFrom(cust, Request.Form);
                dc.SubmitChanges();
                RedirectToAction("Index");//跳轉(zhuǎn)到Index View
            }
     


        【代碼8】:CustomerController.cs中的Update方法

        上面的代碼通過ASP.NET MVC框架實現(xiàn)了Customer的列表、編輯及更新功能,可以看出MVC將應(yīng)用程序的Model、View及Controller三部分"優(yōu)雅的"分離,真正實現(xiàn)了高內(nèi)聚、低耦合的靈活架構(gòu),大大降低了程序的復(fù)雜性,提高了可擴(kuò)展性及可重用性。這一框架對Web開發(fā)帶來的影響不僅是是技術(shù)上的變化,更是Web程序設(shè)計思想的變化 -- Web程序不再是一些列功能頁面的集合,而是又Controller控制的功能單元的集合,Web程序更像是一組通過其URL對外開放的"API"。

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    .NET Web開發(fā)之.NET MVC框架介紹

    .NET Web開發(fā)之.NET MVC框架介紹:MVC概念 MVC是一種架構(gòu)設(shè)計模式,該模式主要應(yīng)用于圖形化用戶界面(GUI)應(yīng)用程序。那么什么是MVC?MVC由三部分組成:Model(模型)、View(視圖)及Controller(控制器)。 Model即應(yīng)用程序的數(shù)據(jù)模型。任何應(yīng)用程序都離不開數(shù)據(jù),數(shù)據(jù)可以存儲在數(shù)據(jù)庫中、磁
    推薦度:
    標(biāo)簽: 簡介 net 模型
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美精品免费在线| 西瓜精品国产自在现线| 亚洲国产成人a精品不卡在线| 大桥未久在线精品视频在线| 亚洲综合精品网站在线观看| 国产情侣大量精品视频| aaa级精品久久久国产片| 亚洲欧美精品SUV| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲七七久久精品中文国产| 午夜精品福利视频| 成人伊人精品色XXXX视频| 日韩人妻精品无码一区二区三区| 久久精品一区二区影院| 成人国内精品久久久久影院VR| 国产精品欧美亚洲韩国日本不卡| 无码国产精品一区二区免费3p | 久久777国产线看观看精品| 久久夜色精品国产网站| 亚洲av午夜国产精品无码中文字| 国产农村妇女毛片精品久久| 9久热这里只有精品| 亚洲精品免费视频| 久久精品国产半推半就| 精品国产一区二区三区免费| 潮喷大喷水系列无码久久精品| 久久夜色精品国产噜噜麻豆| 日韩精品乱码AV一区二区| 在线观看国产精品日韩av| 亚洲av无码成人精品区在线播放 | 精品一区二区三区东京热| 亚洲高清国产AV拍精品青青草原| 亚洲国产精品国产自在在线 | 亚洲精品无码国产| 亚洲AV无码成人网站久久精品大| 宅男宅女精品国产AV天堂| 亚洲级αV无码毛片久久精品| 亚洲国产精品一区二区第一页| 无码人妻精品一区二区三区久久久| 亚洲精品卡2卡3卡4卡5卡区| 无码精品人妻一区二区三区人妻斩|