亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET MVC 框架

2019-11-17 03:56:01
字體:
來源:轉載
供稿:網友
過去的幾年里,很多人要求asp.net的一件事情就是對使用基于model-view-controller(模型-視圖-控制器,簡稱MVC)架構來開發web應用的內置支持。

上個周末在Austin舉行的Alt.NET大會上,我首次對我的團隊正在開發的新ASP.NET MVC 框架作了一個公開的演示。你可以在Scott Hanselman這里的博客 上觀看我的講座的錄像。

我們將在今年稍后發布該框架的一個公開預覽版,然后在明年的上半年將它作為完全支持的ASP.NET特性推出。

模型-視圖-控制器(MVC)框架是什么東西?
MVC是個將一個應用的實現分成三個組件角色的框架技術:模型,視圖和控制器。

在基于MVC的應用里,Model(模型)是負責保持狀態的應用組件。這個狀態通常都持久于數據庫之中(譬如,我們也許會有一個PRoduct(產品)類用來代表SQL中的Products數據表中的訂單數據)。
在基于MVC的應用里,View(視圖)是負責顯示用戶界面的組件。這個UI通常是使用模型數據來創建的(譬如,我們也許會生成一個Product"編輯"視圖,根據當前Product對象的狀態,顯示文本框,下拉框和復選框等)。
在基于MVC的應用里,Controller(控制器)是處理用戶交互,操作模型和最終選擇用哪個視圖來顯示UI的組件。在MVC應用中,視圖只是用來顯示信息而已,是控制器來處理和回應用戶的輸入和交互的。
使用MVC方法的一個好處是,它有助于促進應用中模型,視圖,控制器間的關注的清晰分離。保持關注的清晰分離使得對應用的測試極其容易,因為不同應用組件間的契約的定義和表達是更明確的。

MVC模式也有利于促進紅/綠式測試驅動的開發 (TDD),通過它,你可以在你實際編寫應用代碼本身之前首先實現自動化的單元測試,這些單元測試定義和核實了新代碼的需求。

ASP.NET MVC 框架的一些簡要細節
在幾個星期后,相關代碼可以下載之后,我將寫一些關于這個新的ASP.NET MVC 框架的深入性的教程貼子(與此同時,想進一步了解它的最佳方式是觀看我的Alt.net講座的錄像 ):

這里是關于ASP.NET MVC 框架的一些簡要細節:

它將促進清晰的關注分離,可測試性,和TDD。MVC框架中的所以核心契約都是基于接口的,可以輕易地通過mock來模擬(包括基于接口的 IHttpRequest/IHttpResponse這些基本的東西)。你可以不用在ASP.NET進程中運行控制器(這使得單元測試很快),就單元測試你的應用。你可以使用你想使用的任何單元測試框架來做單元測試,包括NUnit, MBUnit, MS Test等等。
這個框架具有高度的可擴展性和可插拔性。MVC框架中所有的東西都是這樣設計的,它們可以被輕易地替換掉或者定制(譬如,你可以插入你自己的視圖 引擎,路徑轉向策略(routing policy),參數序列化等等)。它還支持使用現有的依賴注入(dependency injection)和控制反轉(IOC)容器模型(Windsor, Spring.Net, NHibernate等等)。
它包括一個非常強大的URL映射組件,允許你使用非常干凈的URL來建造應用。URL不需要擁有文件擴展,是設計來輕松支持SEO和REST友好的命名模式的。譬如,在我上面的項目中,我可以輕松地把/products/edit/4 映射到ProductsController類的Edit方法上,或者把 /Blogs/scottgu/10-10-2007/SomeTopic/ 映射到BlogEngineController類的DisplayPost方法上。
MVC框架支持將現有的ASP.NET .ASPX, .ASCX,和 .Master 標識文件當作視圖模板(view template)之用(這意味著你可以輕松地使用很多現有的ASP.NET特性,象嵌套的母版頁,<%= %>塊,聲明式服務控件,模板,數據綁定,本地化等等)。但是,它不使用現有的將交互返回服務器的postback模型,取而代之的是,你將把用戶的所有交互轉給控制器類來調度,這有助于關注的清晰分離和提高可測試性(這也意味著,在基于MVC的視圖內沒有viewstate或page的生命周期之說)。
ASP.NET MVC框架將完全支持象forms/windows認證,URL授權,成員/角色,輸出和數據緩存,session/profile狀態管理,健康監測,配置系統,以及provider架構等等現有的ASP.NET特性。
結語
如果你正在想使用MVC方式建造你的web應用的話,我認為你會發現這個新的 ASP.NET MVC 框架選項非常干凈,而且容易使用。它將允許你在你的應用中很輕易地保持關注分離,而且有助于進行干凈的測試和TDD。

幾個星期之后,我將撰文說明新的MVC特性的工作原理,以及如何利用它們。

希望本文對你有所幫助,

Scott

標簽: ASP.NET , .NET , Talks , MVC

【附】 Scott Guthrie對一些評語的答復:

1. 【問】你可以在現有的ASPX,ASCX等。。。里使用聲明式服務控件,假如服務控件需要ViewState和Page的生命周期才能工作的話,那么在基于MVC的視圖里使用服務器控件的后果是?

【答】視圖本身是標準的.aspx, .ascx, .master文件,所以還是有對應的后臺(code-behind)類,你可以在其中處理控件的render事件,以把視圖的markup與視圖的顯示邏輯干凈地分開。

至于聲明式控件,控件模型對建造控件而言還是一樣的,區別是,你不能使用postback特性。從邏輯上說,這就象今天創建一個沒有<form runat="server">的aspx網頁類似。所以象<asp:repeater>以及其他的控件依舊還會工作,你要使用標準的表單提交或<a href=""> url來做post操作。

我們也會提供一些對MVC有意識的服務器控件,可以用于沒有postback的視圖頁面里,它們將與基于控制器的邏輯很干凈地集成。

2. 【問】MVC框架是否會包括在VS 2008 RTM里?

【答】 MVC框架可以在VS 2008 RTM下工作,我們將在發布VS 2008 RTM的同時,發布第一個預覽版。MVC框架本身先會居于一個單獨的程序集中,然后會變成.NET 3.5 SP1的一部分。

3. 【問】假如我們使用MVC框架,我們是不是又回到原地了?還是會提供給我們這些認為生命是短暫的人一些適當的好處?用個比喻,我可不想每次沖淋浴,就要重建水龍頭(taps)。

【答】注意,MVC框架并不替代現有的web form模型,很明顯,我們將繼續完全支持并增強web form模型的功能。所有,假如你喜歡控件postback式交互的話,我大概會建議你還是繼續目前的做法,使用基于MVP的模型來做測試。

而MVC模型的確在顯示HTML方面給你更多的控制。但就象你注意到的,這既有好處也有壞處,好處是你有更多的控制,壞處是,控制越多,你需要照顧的東西也越多。我們將提供很好的方式來處理錯誤和保持表單狀態,這樣你就不用寫些丑陋的編碼來處理這些東西了。對你的界面來說,服務器控件模型還是很好地提供了非常干凈的方式來封裝視圖輔助(view-helper)功能,而且我們將提供一套豐富的控件來輔助你。

4. 【問】Brail視圖引擎有一樣好處是,視圖是獨立于主要應用被編譯的,所以假如你對視圖做了改動,它可以立刻被重新編譯。我假定基于DLR的視圖沒有被編譯,但在aspx視圖的情形下,改動視圖是否需要重新裝載應用而導致長時間的延緩呢?假如不需要的話就太好了。

【答】當.aspx網頁被改動后, ASP.NET監測到其變化后,會自動為它生成一個新的程序集。那樣,我們就不需要重新啟動應用了。在基于DLR的.aspx網頁的情形下,實際上我們根本不創建程序集,而可以在內存里對它們做編譯,基于IronPython的.aspx 網頁就是這樣工作的。

注意,因為ASP.NET MVC框架是可以插拔的,你可以選用MonoRail Brail視圖引擎來顯示你的視圖。所以如果你喜歡Brail模型的話,還是可以繼續和新的MVC框架協同工作的。

5.【問】對MVC有意識的服務器控件能否可以從模型驗證來推出自動的客戶端驗證(譬如通過CSS屬性)?

【答】我們會研究,在可能的情況下,從模型的驗證,來允許處理錯誤的客戶端樣式和客戶端javaScript錯誤驗證。但這個不會出現在幾個星期后的第一個預覽版里,但這是我們近期看過的,以后會再研究。

6.【問】你是可以討論一下MVC中DLR,動態語言,LINQ和Asp.Net futures的支持?

【答】LINQ肯定會在MVC框架內完全支持,我們也會增加DLR支持,允許你使用包括IronPython和IronRuby在內的動態語言建造視圖和控制器。

7.【問】象UpdatePanel和其他依賴于postback模型的跟Ajax有關的特性將會得到什么樣的支持?

【答】UpdatePanel確實使用postback,所以你無法直接在基于MVC的視圖里使用那個控件。但我們將提供一個跟該控件類似功能的控件以及相關的輔助方法。它會調用控制器的一個方法,允許你非常容易地做局部更新。它將允許你非常輕松地使用ASP.NET AJAX庫。在幾個星期之后我會寫博客討論更多細節。

8.【問】你的講座錄像里的視圖代碼看上去非常危險地象是老的asp(沒有.net)。monorail nvelocity也是如此。我希望你能綜合兩者的好處哦。

【答】有些人喜歡<%= %>模型,在alt.net大會上我演示MVC模型講座的參與者都要我使用這種方法(所以我寫了那樣的代碼),我也可以使用<asp: repeater>來做列表,通過code-behind來做數據綁定,這允許你更清晰地構造你的視圖顯示代碼。

9.【問】我只是好奇,你需要對內層代碼做多少改動才能使得聲明式服務器控件在不使用postback模型的情形下工作?ASP.NET MVC會在沒有<form runat="server">的頁面上支持現有的服務器控件么?我們是否能夠在同一個頁面上使用多個HTML表單?

【答】我們實際上不用改動內層代碼來支持MVC框架,ASP.NET 實際上已經包含大部分所需的hook了。
ASP.NET MVC框架將允許你在同一個頁面里使用多個HTML表單。象<asp:repeater>和其他支持只讀模式的控件完全沒問題,但倚重于Postback的控件是無法支持postback操作的。

10.【問】我注意到你在ALT.NET的演示里,你從控制器里往視圖里以 new {"value", "value2"}的形式傳遞匿名類型。我的印象是,匿名類型是無法傳到一個方法的范圍之外的。你能解釋一下么?

【答】匿名類型是可以傳到他們所在范圍之外的,但類型名稱是未知的(譬如,你可以以Object類型的形式傳遞或返回這些對象)。

我使用的輔助方法接受一個object作為可選的參數類型,然后使用IDictionary或反射獲取其中的名稱/數組對。所以我可以寫
<%= Html.Link("Push Me", new { Action="Edit", ID=p.ProductId }); %>


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/dz45693/archive/2009/12/22/5057727.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类交人妖| 日韩有码视频在线| 成人免费看黄网站| 国产一区二区动漫| 国产精品在线看| 亚洲aⅴ男人的天堂在线观看| 欧美一级片久久久久久久| 91精品国产色综合久久不卡98口| 国产成人精品免费视频| 久久精品色欧美aⅴ一区二区| 精品久久久久久久久久久| 亚洲成人久久久久| 日韩电影在线观看永久视频免费网站| 国产成人精品一区二区三区| 激情懂色av一区av二区av| 欧美一级成年大片在线观看| 日韩激情视频在线播放| 日韩精品中文字幕在线播放| 欧美专区国产专区| 欧美激情第三页| 日韩精品视频中文在线观看| 亚洲欧美日韩在线高清直播| 日韩成人网免费视频| 国产精品精品视频| 5278欧美一区二区三区| 欧美极品少妇与黑人| 日韩美女免费视频| 97久久精品视频| 亚洲毛茸茸少妇高潮呻吟| 精品偷拍各种wc美女嘘嘘| 久久久久在线观看| 午夜精品视频在线| 色婷婷综合久久久久中文字幕1| 国产精品h片在线播放| 欧美日韩国产在线播放| 欧美激情成人在线视频| 国产精品久久久av| 欧美乱人伦中文字幕在线| 国产免费一区二区三区香蕉精| 国产精品久久久久久久av大片| 黄色精品在线看| 亚洲午夜精品久久久久久性色| 日韩av在线天堂网| 92国产精品久久久久首页| 亚洲级视频在线观看免费1级| 久久综合伊人77777尤物| 国产91在线视频| 色综合久久中文字幕综合网小说| 欧美亚州一区二区三区| 亚洲精品久久久久| 91亚洲人电影| 国产在线日韩在线| 国产精品久久久久免费a∨大胸| 久久久久久久久久久91| 91系列在线播放| 欧美久久久精品| 精品久久中文字幕| 成人激情黄色网| 欧美国产精品人人做人人爱| 日韩国产精品亚洲а∨天堂免| 国产精品永久免费视频| 久久久久久久国产精品| 亚洲高清免费观看高清完整版| 一区二区亚洲精品国产| 久久天天躁狠狠躁老女人| 超碰精品一区二区三区乱码| 91九色视频导航| 日韩精品视频免费在线观看| 亚洲丝袜一区在线| 久久精品成人一区二区三区| 国产日韩专区在线| 欧美男插女视频| 国产精品久久av| 欧美成人精品三级在线观看| 日韩va亚洲va欧洲va国产| 久久精品国产清自在天天线| 欧美第一黄色网| 欧美孕妇性xx| 亚洲香蕉在线观看| 中文字幕日韩精品在线观看| 国产伊人精品在线| 91久久国产综合久久91精品网站| 成人a在线观看| 茄子视频成人在线| 草民午夜欧美限制a级福利片| 亚洲女人被黑人巨大进入al| 欧美激情xxxx| 91九色单男在线观看| 亚洲一区二区中文字幕| 欧美日本中文字幕| 精品电影在线观看| 欧美日韩亚洲一区二区| 欧美日韩激情网| 欧美久久精品一级黑人c片| 欧美福利视频网站| 国精产品一区一区三区有限在线| 欧美激情视频免费观看| 亚洲国产精品网站| 欧美亚洲日本网站| 欧美激情久久久| 亚洲精品久久久久中文字幕二区| 欧美在线欧美在线| 欧美极品少妇xxxxⅹ裸体艺术| 日本人成精品视频在线| 美女扒开尿口让男人操亚洲视频网站| 国产成人jvid在线播放| 在线精品91av| 欧美日韩成人在线播放| 日本成人免费在线| 久久免费福利视频| 欧美午夜激情小视频| 欧美激情中文字幕乱码免费| 亚洲精品网址在线观看| 久久综合国产精品台湾中文娱乐网| 国产亚洲欧美视频| 欧美亚洲视频一区二区| 亚洲97在线观看| 久久精品国产99国产精品澳门| 国产精品入口日韩视频大尺度| 91系列在线播放| 日本久久中文字幕| 欧美性在线视频| 欧美www视频在线观看| 国产精品一香蕉国产线看观看| **欧美日韩vr在线| 精品毛片网大全| 亚洲第一级黄色片| www.xxxx精品| 亚洲成人久久久久| 国产精品久久久久久久久免费看| 国产精品一区二区三区久久| 日韩中文字幕精品视频| 精品福利一区二区| 国产精品69av| 日本高清视频一区| 精品偷拍一区二区三区在线看| 欧美国产日韩一区| 欧美老少配视频| 91久久精品美女高潮| 久久噜噜噜精品国产亚洲综合| 欧美激情精品久久久久久大尺度| 久久精品国产69国产精品亚洲| 91在线高清免费观看| 欧美日本高清视频| 久久久久久久国产精品| 亚洲国模精品一区| 中文字幕亚洲天堂| 九九九久久国产免费| 亚洲欧美日韩中文视频| 亚洲精品免费av| 中文字幕亚洲二区| 欧美制服第一页| 一区二区日韩精品| 51精品在线观看| 日韩精品在线视频美女| 久久久99久久精品女同性| 色综合久综合久久综合久鬼88| 国产精品久久久久aaaa九色| 夜夜嗨av一区二区三区免费区| 欧美大荫蒂xxx| 久久久久久久电影一区| 亚洲免费人成在线视频观看| 91精品国产成人| 久久乐国产精品|