第一篇:MVC的優(yōu)缺點(diǎn)
MVC的優(yōu)點(diǎn)
大部分用過(guò)程語(yǔ)言比如ASP、PHP開(kāi)發(fā)出來(lái)的Web應(yīng)用,初始的開(kāi)發(fā)模板就是混合層的數(shù)據(jù)編程。例如,直接向數(shù)據(jù)庫(kù)發(fā)送請(qǐng)求并用HTML顯示,開(kāi)發(fā)速度往往比較快,但由于數(shù)據(jù)頁(yè)面的分離不是很直接,因而很難體現(xiàn)出業(yè)務(wù)模型的樣子或者模型的重用性。產(chǎn)品設(shè)計(jì)彈性力度很小,很難滿足用戶的變化性需求。MVC要求對(duì)應(yīng)用分層,雖然要花費(fèi)額外的工作,但產(chǎn)品的結(jié)構(gòu)清晰,產(chǎn)品的應(yīng)用通過(guò)模型可以得到更好地體現(xiàn)。
首先,最重要的是應(yīng)該有多個(gè)視圖對(duì)應(yīng)一個(gè)模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問(wèn)應(yīng)用的要求。例如,訂單模型可能有本系統(tǒng)的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對(duì)于訂單的處理都是一樣,也就是說(shuō)訂單的處理是一致的。按 MVC設(shè)計(jì)模式,一個(gè)訂單模型以及多個(gè)視圖即可解決問(wèn)題。這樣減少了代碼的復(fù)制,即減少了代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維護(hù)。其次,由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應(yīng)用于接口的使用。
再次,由于一個(gè)應(yīng)用被分離為三層,因此有時(shí)改變其中的一層就能滿足應(yīng)用的改變。一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需改動(dòng)MVC的模型層。
控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起完成不同的請(qǐng)求,因此,控制層可以說(shuō)是包含了用戶請(qǐng)求權(quán)限的概念。
最后,它還有利于軟件工程化管理。由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過(guò)工程化、工具化產(chǎn)生管理程序代碼。
MVC的不足
MVC的不足體現(xiàn)在以下幾個(gè)方面:
(1)增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性。對(duì)于簡(jiǎn)單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會(huì)增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過(guò)多的更新操作,降低運(yùn)行效率。
(2)視圖與控制器間的過(guò)于緊密的連接。視圖與控制器是相互分離,但確實(shí)聯(lián)系緊密的部件,視圖沒(méi)有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨(dú)立重用。
(3)視圖對(duì)模型數(shù)據(jù)的低效率訪問(wèn)。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對(duì)未變化數(shù)據(jù)的不必要的頻繁訪問(wèn),也將損害操作性能。
(4)目前,一般高級(jí)的界面工具或構(gòu)造器不支持MVC模式。改造這些工具以適應(yīng)MVC需要和建立分離的部件的代價(jià)是很高的,從而造成使用MVC的困難。
第二篇:MVC,演講稿
篇一:演講稿 尊敬的各位老師: 大家下午好!
我是來(lái)自xxx班的xxx,經(jīng)過(guò)兩年的勤奮學(xué)習(xí)和努力工作,各方面都取得了不錯(cuò)的成績(jī)現(xiàn)鄭重提出申請(qǐng)校友獎(jiǎng)學(xué)金。下面我將從以下兩個(gè)方面介紹自己。
在工作上,我既是一個(gè)班長(zhǎng)也是學(xué)習(xí)委員。我能帶領(lǐng)同學(xué)積極響應(yīng)學(xué)校和老師的號(hào)召,認(rèn)真布置,帶頭圓滿任務(wù)。在大一的晚課期間,我積極組織同學(xué)利用晚課時(shí)間背英語(yǔ)四六級(jí)單詞、做閱讀理解、聽(tīng)聽(tīng)力,幫助他們順利的通過(guò)四六級(jí)考試。在臨近期末試,我還會(huì)組織學(xué)習(xí)優(yōu)異的同學(xué)給學(xué)習(xí)薄弱的同學(xué)進(jìn)行輔導(dǎo),幫助他們能夠在期末考試中取得一個(gè)比較好的成績(jī)。在平時(shí)我會(huì)提早到教室準(zhǔn)備多媒體,幫老師節(jié)約每一分鐘時(shí)間,并做好老師與同學(xué)時(shí)間的溝通,起到一個(gè)很好的橋梁作用。偶爾也會(huì)組織一些比賽來(lái)督促同學(xué)們學(xué)習(xí),來(lái)提高同學(xué)們的學(xué)習(xí)勁頭,從而形成一種不錯(cuò)的學(xué)習(xí)氛圍。在緊張的學(xué)習(xí)之余,我也會(huì)配合班主任組織開(kāi)展各種文體活動(dòng)如元旦晚會(huì)、包餃子等等,努力給同學(xué)們營(yíng)造一種在家的感覺(jué),因?yàn)槲覀兙褪且患胰?/p>
在學(xué)習(xí)上,我的成績(jī)?cè)诎嗉?jí)里一直名列前茅。每一次上課都爭(zhēng)取坐在最前面,把老師說(shuō)的每一句話都記住、理解,落實(shí)課堂上老師講的每一個(gè)知識(shí)點(diǎn),課后能夠獨(dú)立完成各科老師布置的任務(wù)。在課余時(shí)間,為了能豐富自己,從圖書(shū)館借閱了許多專業(yè)書(shū)籍,學(xué)會(huì)php、mvc、c#、xml等多種語(yǔ)言,而且也從網(wǎng)上查找相關(guān)的視頻進(jìn)行深入學(xué)習(xí)并且熟練的掌握了它們的用法?,F(xiàn)在我還加入了老師的實(shí)驗(yàn)室,幫助老師完成了一些簡(jiǎn)單的工作,如數(shù)據(jù)采集,參與并完成博通實(shí)時(shí)用電檢測(cè)系統(tǒng)等等,在一個(gè)個(gè)項(xiàng)目中鍛煉自己,積累經(jīng)驗(yàn)。此外,我在2013年6月通過(guò)了大學(xué)生英語(yǔ)四級(jí)考試,在第十一屆英語(yǔ)體驗(yàn)節(jié)獲得配音組優(yōu)秀獎(jiǎng),在2014年長(zhǎng)春工程學(xué)院英語(yǔ)閱讀大賽獲得三等獎(jiǎng),2013-2014學(xué)年獲得校二等獎(jiǎng)學(xué)金。
在大學(xué)的這兩年中,我在各個(gè)方面都有所收獲,綜合素質(zhì)有很大的提高。我要特別謝謝學(xué)院領(lǐng)導(dǎo)為我們提供了良好的學(xué)習(xí)環(huán)境和自我施展的空間,感謝各位老師的大力培養(yǎng)。今后我要更加嚴(yán)格要求自己,已有更好的表現(xiàn)來(lái)回報(bào)母校。謝謝!我的演講到此結(jié)束。篇二:職業(yè)規(guī)劃--演講稿 敬愛(ài)的評(píng)委,親愛(ài)的同學(xué)們:
大家晚上好!我是12級(jí)軟件一班的韓德興!今晚,我將與大家一起分享我的職業(yè)規(guī)劃!與其說(shuō)是規(guī)劃,倒不如說(shuō)是我的一個(gè)夢(mèng)!不過(guò)這可不是做夢(mèng),而是夢(mèng)想!而我規(guī)劃的主題便是:立足現(xiàn)在,胸懷未來(lái)!
步入了大學(xué)生活,我們的生活空間自由多了,很可能會(huì)因無(wú)目標(biāo)而迷失方向。給自己制定目標(biāo),就像是給船舶導(dǎo)航!日益激烈的就業(yè)壓力就在我們身邊,我們就更應(yīng)該好好的規(guī)劃我們的職業(yè)生涯!使自己能夠有目標(biāo)的學(xué)習(xí),有目標(biāo)的工作,有目標(biāo)的生活,使自己每天都過(guò)得充實(shí)而有意義!而職業(yè)生涯規(guī)劃則是為我們的夢(mèng)想插上翅膀,讓我們?cè)谌松鷳?zhàn)略上更勝人一籌!
首先,我的規(guī)劃分為六個(gè)部分:自我分析,職業(yè)分析、環(huán)境分析,計(jì)劃實(shí)施方案,調(diào)整評(píng)估、備選職業(yè)規(guī)劃方案!
一、自我分析 swto分析
強(qiáng)勢(shì)(strength)? 善于交際,人際關(guān)系好。? 組織、管理、策劃能力好。
? 心里素質(zhì)較強(qiáng),能夠承受得起挫折失敗和壓力。? 工作積極認(rèn)真,有熱情,有創(chuàng)新意識(shí),喜歡突破。弱勢(shì)(weakness)? 做事有時(shí)缺乏穩(wěn)重,易于急躁。
? 某些方面自制力較差,不能按照計(jì)劃行事。機(jī)會(huì)(opportunity)? 所學(xué)專業(yè)就業(yè)前景明朗。? 畢業(yè)前的各種招聘面試。威脅(threat)? 面試時(shí)的各種刁難與挑戰(zhàn)。? 工作提升較慢,工作壓力大。
(一)、自我深入解析
(1)職業(yè)興趣(喜歡干什么):喜歡在班級(jí)里面跟同學(xué)一起學(xué)習(xí),一起工作,一起編程,一起奮斗??傊嘈盼宜鶎W(xué)的專業(yè)能讓我最好的發(fā)揮自己的能力。
(2)所學(xué)專業(yè)畢業(yè)之后應(yīng)具有的職業(yè)能力(能夠干什么):編程,網(wǎng)站維護(hù),產(chǎn)品需求分析。(3)個(gè)性特質(zhì)(適合干什么):我有定力,我認(rèn)為我能勝任那些繁瑣有序的工作。(4)職業(yè)價(jià)值觀(最看重什么):工作環(huán)境有利于自己成長(zhǎng),有利于發(fā)揮特長(zhǎng)。(5)勝任能力(優(yōu)劣勢(shì)是什么):我的優(yōu)勢(shì)能力
1、對(duì)編程和解決程序上的問(wèn)題上有很濃的興趣,愿意去接受,學(xué)習(xí)新的技術(shù)。
2、平時(shí)喜歡看書(shū),希望可以從書(shū)籍上學(xué)到可以在工作上幫助自己的知識(shí)。我的弱勢(shì)能力
1、心直口快。
二、職業(yè)認(rèn)知? 界面設(shè)計(jì),程序設(shè)計(jì)基礎(chǔ),數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ),面向?qū)ο蟪绦蛟O(shè)計(jì),web 標(biāo)準(zhǔn)網(wǎng)頁(yè)設(shè)計(jì),jquery,數(shù)據(jù)庫(kù)程序設(shè)計(jì),web應(yīng)用開(kāi)發(fā),軟件配置管理與測(cè)試,軟件工程與uml語(yǔ)言,mvc框架等。
? 就業(yè)方向:從事web前端設(shè)計(jì)、web應(yīng)用軟件開(kāi)發(fā)、軟件測(cè)試、軟件銷 售等崗位。
? 可取得的證書(shū):通過(guò)考試可獲取相關(guān)軟件企業(yè)認(rèn)證證書(shū):軟件工程師、國(guó)
三、環(huán)境分析
環(huán)境分析包括家庭環(huán)境、學(xué)校環(huán)境、社會(huì)環(huán)境、職業(yè)環(huán)境。
家庭環(huán)境:良好:我很慶幸自己有一個(gè)完整的家庭,父母的支持給了我無(wú)盡的力量!他們的存在我撐起了一片廣闊的藍(lán)天!
學(xué)校環(huán)境:而滁州職業(yè)技術(shù)學(xué)院學(xué)院的各種設(shè)施也很健全,學(xué)習(xí)氛圍也很濃厚,這就為我提供了一個(gè)很好的學(xué)習(xí)環(huán)境和生活空間。
社會(huì)環(huán)境:軟件行業(yè)的人才供不應(yīng)求,現(xiàn)如今中國(guó)軟件和信息行業(yè)的人才嚴(yán)重缺乏。
職業(yè)環(huán)境:it網(wǎng)絡(luò)專業(yè)人員需求:到2012年全球缺口為一百萬(wàn)。所以我所學(xué)的專業(yè)正好對(duì)口。
四、計(jì)劃實(shí)施方案
首先應(yīng)給自己定立一個(gè)明確的目標(biāo):而我的目標(biāo)是—程序員—工程師—項(xiàng)目經(jīng)理 從一個(gè)菜鳥(niǎo)到一個(gè)it精英 一路上遇到的困難應(yīng)該非常多,而我的座右銘是:古之立大事者,不惟有超世之才,亦必有堅(jiān)韌不拔之志。我一定堅(jiān)持到最后,成為最后的勝利者。我的最終目標(biāo)是軟件開(kāi)發(fā)項(xiàng)目經(jīng)理。應(yīng)具備的能力: ? 解決生產(chǎn)過(guò)程重要技術(shù)問(wèn)題。? 掌握本專業(yè)國(guó)內(nèi)外現(xiàn)狀。? 掌握現(xiàn)代管理的發(fā)展趨勢(shì)。? 能夠指導(dǎo)工程有計(jì)劃的開(kāi)展。下面是我的短、中、終期計(jì)劃: 短期計(jì)劃:時(shí)間為2012—2015年(1)學(xué)好專業(yè)知識(shí),提高英語(yǔ)和電腦的應(yīng)用水平。(2)拿到相關(guān)的技能證書(shū)和榮譽(yù)證書(shū).(3)積極參加活動(dòng),寬大交際面.(4)加強(qiáng)社會(huì)實(shí)踐活動(dòng),關(guān)注就業(yè)動(dòng)態(tài)。中期計(jì)劃:時(shí)間為2015—2020年(1)進(jìn)入一家軟件公司鍛煉自己。(2)在工作中不斷學(xué)習(xí),掌握技能。
(3)成為公司的骨干力量,搞好人脈關(guān)系。(4)成為工程師、中層管理人員。終期計(jì)劃:時(shí)間為2020—2030年
(1)結(jié)合所學(xué)知識(shí)和實(shí)際經(jīng)驗(yàn),不斷摸索創(chuàng)新。(2)總結(jié)經(jīng)驗(yàn),形成獨(dú)特有效的工作方式。(3)工作受到領(lǐng)導(dǎo)和員工的肯定。(4)成為項(xiàng)目經(jīng)理、公司高層的管理人員。
五、調(diào)整評(píng)估
根本依據(jù):是否實(shí)現(xiàn)了自己的預(yù)定目標(biāo)。
認(rèn)真分析原因,及時(shí)調(diào)整路線,尋找補(bǔ)救措施。
認(rèn)真總結(jié)經(jīng)驗(yàn),下一步目標(biāo)能否加快實(shí)現(xiàn),調(diào)整方案。
全面評(píng)估:本人的評(píng)估、父母、上級(jí)、平級(jí)、下級(jí)、社會(huì)組織的評(píng)估。
六、備選職業(yè)規(guī)劃方案
如果招聘受阻,無(wú)法進(jìn)入目標(biāo)公司;提拔、晉升無(wú)望。
解決方案:尋找其他的軟件開(kāi)發(fā)公司,或?qū)で蠛匣锶耍灾鲃?chuàng)業(yè)。知己知彼,才能百戰(zhàn)不殆!在職業(yè)分析之前,我先對(duì)自己做了一個(gè)全面的剖析!我性格開(kāi)朗,擅長(zhǎng)交際,是一名樂(lè)觀主義者!這種對(duì)什么事情都樂(lè)觀對(duì)待的態(tài)度能為我以后的創(chuàng)業(yè)提供很好的條件!而且我還擁有不服輸?shù)膫€(gè)性,所以我確信,我的人生必將是精彩而且輝煌的!…… 可是,金無(wú)足赤,人無(wú)完人!通過(guò)swot分析法,我將自己的優(yōu)缺點(diǎn)做了一次比較!一個(gè)健康的身體,一個(gè)明確的目標(biāo),外加耐心細(xì)心的處事態(tài)度以及開(kāi)朗的個(gè)性造就了一個(gè)活潑大方且意志堅(jiān)定的我!但這樣的我并不完美!面對(duì)這個(gè)社會(huì)的種種壓力,有時(shí)我也會(huì)擔(dān)心!我知道擔(dān)也沒(méi)有用,只要又一個(gè)名確的目標(biāo),用心的走下去,力求以一個(gè)更完美的姿態(tài)去面對(duì)這個(gè)多變的社會(huì)!
揚(yáng)帆啟航,總有一天會(huì)到達(dá)夢(mèng)想的彼岸。而我的夢(mèng)想便是成為一名項(xiàng)目經(jīng)理!放眼市場(chǎng),軟件開(kāi)發(fā)行業(yè)的前景是非常好的,許多省市都把這個(gè)行業(yè)作為新的經(jīng)濟(jì)增長(zhǎng)點(diǎn)來(lái)規(guī)劃!軟件更是被人們稱為整個(gè)it行業(yè)的核心。但是需求大并不等于競(jìng)爭(zhēng)小。軟件開(kāi)發(fā)人才的急劇增多為我以后的就業(yè)帶來(lái)了很大的壓力!所以,我必須從各方面努力提升自己的能力,爭(zhēng)取在這一領(lǐng)域占據(jù)自己的一席之地!……
萬(wàn)丈高樓平地起,所有的成大事者必定是從身邊的小事開(kāi)始入手的,所以從現(xiàn)在起,我開(kāi)始計(jì)劃我大學(xué)三年的征程!大一為試探期,適應(yīng)新環(huán)境,培養(yǎng)溝通能力是我這一階段的目標(biāo)。而就目前來(lái)看,我已圓滿完成了這一階段的任務(wù)!大二為定向期,這一階段必須打牢專業(yè)基礎(chǔ),并確定合適的定位!大三則為沖刺期,我必須專注于自己的目標(biāo),專業(yè)課的學(xué)習(xí)進(jìn)入深化階段,各種軟件的學(xué)習(xí)也進(jìn)入強(qiáng)化階段!而且這一階段還需有意識(shí)的進(jìn)行能力、職業(yè)素養(yǎng)的提高和經(jīng)驗(yàn)的積累!只有這樣,才不至于在以后的實(shí)踐中太過(guò)慌張!
接下來(lái)是畢業(yè)后的計(jì)劃了,這才是我人生真正意義上的啟航!因?yàn)槲覍⒂霉ぷ魅?chuàng)造快樂(lè),再用快樂(lè)去服務(wù)社會(huì)!我要花三年時(shí)間做一名軟件開(kāi)發(fā)工作者,進(jìn)入相關(guān)企業(yè)工作,提高經(jīng)驗(yàn),提高技能!再用十年時(shí)間爭(zhēng)取成為一名項(xiàng)目經(jīng)理,并積累一定的資金,為下一步的創(chuàng)業(yè)做積極的準(zhǔn)備…最后,再用十年時(shí)間經(jīng)營(yíng)一家自己的軟件開(kāi)發(fā)公司,把公司做強(qiáng)、做大!這都僅僅只是規(guī)劃而已。規(guī)劃并不是一勞永逸、一成不變的!所以,為了適應(yīng)這千
變?nèi)f化的職場(chǎng)世界,我們必須結(jié)合社會(huì)環(huán)境以及個(gè)人能力的變化及時(shí)的做出調(diào)整!只有這樣不斷的規(guī)劃、調(diào)整,才能知道我們開(kāi)出的處方是否對(duì)我們的人生奏效!
對(duì)于每個(gè)大學(xué)生來(lái)說(shuō),或許會(huì)有迷茫、不知所措。但我對(duì)于我的未來(lái)充滿了信心!我已確定了自己遠(yuǎn)行的航標(biāo),朝著這個(gè)航標(biāo)前行,我相信我一定會(huì)成功!人生沒(méi)有定數(shù),似孤帆,驚濤駭浪中漂泊;似孤鷹,碧海藍(lán)天中飛翔!讓我們?yōu)閴?mèng)想插上翅膀,尋找夢(mèng)的彼岸,成就永恒的追求!……謝謝大家,篇三:中國(guó)軟件杯演講稿 設(shè)計(jì)專用商店管理平臺(tái)
一、系統(tǒng)采用的技術(shù)
本系統(tǒng)采用java web的spring mvc框架和mybatis框架搭建而成.二、采用的開(kāi)發(fā)軟件
本系統(tǒng)采用myeclipse 10.0+mysql 5.1+tomcat 6.0+jdk 1.6搭 建而成。
三、mysql數(shù)據(jù)庫(kù)涉及到的數(shù)據(jù)表: 數(shù)據(jù)庫(kù)中共涉及到14個(gè)數(shù)據(jù)表 user(賣家)對(duì)應(yīng)的建表語(yǔ)句: create table ptuser(uid int primary key auto_increment, uname varchar(30), upass varchar(30),uphone varchar(30), qx int);muser(管理員)對(duì)應(yīng)的建表語(yǔ)句: create table gluser(uid int primary key auto_increment, muname varchar(30), mupass varchar(30), muiden varchar(30), qx int, sh int);shudian(書(shū)店)對(duì)應(yīng)的建表語(yǔ)句: create table shudian(sdid int primary key auto_increment, uid int, sdname varchar(30));book(圖書(shū))對(duì)應(yīng)的建表語(yǔ)句: create table book(bookid int primary key auto_increment, sdid int, uid int, tsname varchar(30), author varchar(30), price double, num int);dingdan(訂單)對(duì)應(yīng)的建表語(yǔ)句: create table dingdan(did int primary key auto_increment, sdid int, bookid int, name varchar(30), phone varchar(30), address varchar(100), uid int, cl int);mjts(買家投訴)對(duì)應(yīng)的建表語(yǔ)句: create table mjts(mid int primary key auto_increment, name varchar(30), phone varchar(30), sdname varchar(30), tsname varchar(30), ly varchar(2000), cl int);salets(賣家投訴)對(duì)應(yīng)的建表語(yǔ)句: create table salets(sid int primary key auto_increment, sdname varchar(30), tsname varchar(30), name varchar(30), phone varchar(30), ly varchar(2000), cl int);salebookzk(圖書(shū)銷售狀況)
第三篇:淺談.net MVC
這些天開(kāi)始學(xué)習(xí)asp.netmvc,用傳統(tǒng)的asp.net已經(jīng)快四的年了,剛開(kāi)始接觸asp.netmvc確認(rèn)感覺(jué)有點(diǎn)不適應(yīng),主要體現(xiàn)在asp.netmvc的實(shí)現(xiàn)上。
ASP.net MVC使用心得:?jiǎn)栴}總結(jié)powered by 25175.net
問(wèn)題一:要想學(xué)習(xí)asp.netmvc,我個(gè)人覺(jué)的最重要的一步是知道m(xù)vc路由機(jī)制,傳統(tǒng)的asp.net程序要想訪問(wèn)一個(gè)頁(yè)面,都是根據(jù)頁(yè)面路徑來(lái)訪問(wèn),但MVC并不能直接訪問(wèn)aspx頁(yè)面。
問(wèn)題二:理解MVC三部分的含義和用法。當(dāng)我們創(chuàng)建一個(gè)asp.netmvc應(yīng)用程序時(shí),系統(tǒng)會(huì)默認(rèn)生成三個(gè)文件夾:
1:Controllers,對(duì)應(yīng)MVC中的C,主要是處理所有請(qǐng)求與做出對(duì)應(yīng)的響應(yīng);
2:Models,對(duì)應(yīng)MVC中的M,相當(dāng)時(shí)我們平時(shí)創(chuàng)建工程中的實(shí)體工程,只不過(guò)在MVC中它充當(dāng)了存放數(shù)據(jù)模型的作用;
3:Views,對(duì)應(yīng)MVC中的V,這里就是存放用戶訪問(wèn)的頁(yè)面文件,但是這個(gè)文件不能在瀏覽器中根據(jù)路徑訪問(wèn)。
對(duì)于系統(tǒng)生成的asp.netmvc項(xiàng)目,我對(duì)其做了如下擴(kuò)展:
擴(kuò)展點(diǎn)一:系統(tǒng)之所以在web工程中直接創(chuàng)建了三個(gè)文件夾,是為了更加直觀的體現(xiàn)MVC模式,真正項(xiàng)目中我們需要把它們分開(kāi)。
擴(kuò)展點(diǎn)二:MVC中重要的路由處理,默認(rèn)情況是在Global.asax文件中,我們也可以把這塊內(nèi)容獨(dú)立出來(lái)。擴(kuò)展點(diǎn)三:把Controller類和業(yè)務(wù)邏輯分離,這里可以采用Repository模式。
ASP.net MVC使用心得:案例DEMO
創(chuàng)建一個(gè)簡(jiǎn)單的留言簿的項(xiàng)目,數(shù)據(jù)存儲(chǔ)采用sql,本想用linq to entity,但總覺(jué)的這部分還相關(guān)不完善,且性能存在問(wèn)題,故使用傳統(tǒng)ado.net實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。下面是這個(gè)項(xiàng)目的分層。
1:GuestBook.Web,頁(yè)面表示層,MVC中的V。
2:GuestBook.MVC.Controller,存放項(xiàng)目所有的Controller,MVC中的C。我們知道Controller有兩個(gè)作用:第一,處理請(qǐng)求;第二,做出對(duì)應(yīng)的響應(yīng)。第二點(diǎn)就是我們平時(shí)理解的后臺(tái)功能實(shí)現(xiàn),例如數(shù)據(jù)的增刪改查等。我們可以把這部分功能與Controller分離,即所有的業(yè)務(wù)邏輯都寫在業(yè)務(wù)邏輯層,不直接依賴
Controller,我們可以進(jìn)一步把這些功能點(diǎn)抽象出來(lái),讓Controller依賴一個(gè)公共的接口。這個(gè)思想我之前的一篇文章有點(diǎn)異曲同工之處:對(duì)增刪改查用面向?qū)ο筮M(jìn)行包裝
首先:創(chuàng)建一個(gè)Repository接口:IRepository.cs,里面包含些常見(jiàn)數(shù)據(jù)處理操作方法:這個(gè)接口是一個(gè)泛型接口,以實(shí)現(xiàn)所有實(shí)體類的通用性。
1.public interface IRepository< T>
2.{
3.List< T> FindAllInfo();
4.T GetInfo(T model);
5.boolAdd(T model);
6.boolDelete(T model);
7.boolEdit(T model);
8.}
然后:實(shí)現(xiàn)一條留言的數(shù)據(jù)處理:
1.public List< GuestBookInfo> FindAllInfo()
2.{
3.string sql = “select * from GuestBook”;
4.5.List< GuestBookInfo> list = new List< GuestBookInfo>();
6.using(SqlDataReader dr=SqlHelper.ExecuteReader(conn ,CommandType.Text ,sql))
7.{
8.while(dr.Read())
9.{
10.GuestBookInfo model = new GuestBookInfo();
11.model.ID = int.Parse(dr[“ID”].ToString());
12.model.sTitle = dr[“sTitle”].ToString();
13.model.sContent = dr[“sContent”].ToString();
14.list.Add(model);
15.}
16.17.}
18.return list;
19.}
20.public GuestBookInfo GetInfo(GuestBookInfo model)
21.{
22.string sql = “select * from GuestBook where ID=”+model.ID.ToString();
23.using(SqlDataReader dr = SqlHelper.ExecuteReader(conn, CommandType.Text, sql))
24.{
25.if(dr.Read())
26.{
27.model.ID = int.Parse(dr[“ID”].ToString());
28.model.sTitle = dr[“sTitle”].ToString();
29.model.sContent = dr[“sContent”].ToString();
30.31.}
32.33.}
34.return model;
35.}
36.public bool Add(GuestBookInfo model)
37.{
38.string sql = “insert into GuestBook(sTitle,sContent)values('” + model.sTitle + “','” + model.sContent + “')”;
39.int i = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql);
40.if(i > 0)
41.{ return true;}
42.return false;
43.}
44.public bool Delete(GuestBookInfo model)
45.{
46.string sql = “delete GuestBook where ID=” + model.I
D.ToString();
47.int i = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql);
48.if(i > 0)
49.{ return true;}
50.return false;
51.}
52.public bool Edit(GuestBookInfo model)
53.{
54.string sql = “update GuestBook set sTitle='” + model.sTitle + “',sContent='” + model.sContent + “' where ID=” + model.ID.ToString();
55.int i = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql);
56.if(i > 0)
57.{ return true;}
58.return false;
59.}
其實(shí):Controller依賴IRepository接口。
1.public class GuestBookController : System.Web.Mvc.Controller
2.{
3.IRepository< GuestBookInfo> inter = new BLL_GuestBook();
4.public ActionResult Index()
5.{
6.var models = inter.FindAllInfo();
7.return View(“Index”, models);
8.}
9.[AcceptVerbs(HttpVerbs.Post)]
10.public ActionResult Create(GuestBookInfo model)
11.{
12.13.inter.Add(model);
14.return RedirectToAction(“Index”);
15.}
16.public ActionResult Create()
17.{
18.GuestBookInfo model = new GuestBookInfo();
19.return View(model);
20.}
21.public ActionResult Details(int id)
22.{
23.24.GuestBookInfo model=new GuestBookInfo();
25.model.ID =id;
26.model =inter.GetInfo(model);
27.if(string.IsNullOrEmpty(model.sTitle))
28.{ return View(“NotFound”);}
29.else
30.{
31.return View(“Details”,model);
32.}
33.}
34.public ActionResult Edit(int id)
35.{
36.GuestBookInfo model = new GuestBookInfo();
37.model.ID = id;
38.model = inter.GetInfo(model);
39.if(string.IsNullOrEmpty(model.sTitle))
40.{ return View(“NotFound”);}
41.else
42.{
43.return View(“Edit”, model);
44.}
45.}
46.[AcceptVerbs(HttpVerbs.Post)]
47.public ActionResult Edit(int id, FormCollection formValues)
48.{
49.GuestBookInfo model = new GuestBookInfo();
50.model.ID = id;
51.model = inter.GetInfo(model);
52.UpdateModel(model);
53.inter.Edit(model);
54.return RedirectToAction(“Index”);
55.}
56.public ActionResult Delete(int id)
57.{
58.GuestBookInfo model = new GuestBookInfo();
59.model.ID = id;
60.model = inter.GetInfo(model);
61.if(model == null)
62.return View(“NotFound”);
63.inter.Delete(model);
64.return RedirectToAction(“Index”);
65.}
66.67.}
3:GuestBook.Model,MVC中的M。
4:GuestBook.RouteManager,路由管理項(xiàng)目,把路由處理從Global.asax中分離開(kāi)。我們創(chuàng)建一個(gè)新類:MyMvcAppliation.cs
1.publicclass MyMvcAppliation:HttpApplication
2.{
3.public static void RegisterRoutes(RouteCollection routes)
4.{
5.routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);6.7.routes.MapRoute(8.“Default”,// Route name
9.“{controller}/{action}/{id}”,// URL with parameters
10.new { controller = “Home”, action = “Index”, id = “" },// Parameter defaults
11.new string[] { ”GuestBook.MVC.Controller“ }
12.);
13.14.15.}
16.17.protected void Application_Start()
18.{
19.ControllerBuilder.Current.DefaultNamespaces.Add(”GuestBook.MVC.Controller");
20.RegisterRoutes(RouteTable.Routes);
21.}
22.}
5:GuestBook.Data,數(shù)據(jù)處理工具類,例如SqlHelp等等。
6:GuestBook.DAL,數(shù)據(jù)處理層。
7:GuestBook.BLL,業(yè)務(wù)邏輯層。
8:GuestBook.MyInterface,相關(guān)接口,本項(xiàng)目中包含Repository模式中的接口類。
這篇文章主要是探討了MVC項(xiàng)目的分層以及部分?jǐn)U展,歡迎大家提出更好的想法。這些就是我ASP.net MVC的使用心得。
第四篇:MVC 學(xué)習(xí)手冊(cè)
<一>ASP.NET 基礎(chǔ)
一.網(wǎng)站開(kāi)發(fā)的基本概述
1.網(wǎng)站開(kāi)發(fā)的基本步驟(定位于2,3兩個(gè)步驟)
2.網(wǎng)站開(kāi)發(fā)需要的知識(shí)結(jié)構(gòu)
3.網(wǎng)站運(yùn)行原理 / 7
4.ASP.NET 開(kāi)發(fā)技術(shù)組合
二.ASP.NET第一個(gè)程序和基本原理分析 1.步驟:(1)新建項(xiàng)目,ASP.NET MVC4 Web應(yīng)用程序,選.NET FrameWork 4,選擇空模版,視圖選擇Aspx(基礎(chǔ)視圖)
(2)在Controllers(控制器)中添加控制器,創(chuàng)建一個(gè)空的HomeController控制器(是一個(gè)類)
(3)在View文件夾中添加一個(gè)子文件夾,命名為Home。在Home中添加一個(gè)視圖Index,(添加中去掉作為母版頁(yè)勾選項(xiàng),修改視圖引擎Aspx)
(4).NET成框架
(5)MVC原理圖解 / 7
三.ASP.NET MVC項(xiàng)目文件夾和核心文件的解釋
1.MVC項(xiàng)目中文件夾介紹
1)App_Data文件夾:用來(lái)保存數(shù)據(jù)文件,如XML文件等 2)App_Start文件夾:包含MVC系統(tǒng)啟動(dòng)的相關(guān)類 a>FilterConfig文件:過(guò)濾器文件
b>RouteConfig文件:路由配置文件
c>WebApiConfig文件:WebApi配置文件
3)Global.asax文件:全局應(yīng)用程序控制文件,啟動(dòng)App_Start中的3個(gè)配置文件
4)Controller文件夾:存放整個(gè)項(xiàng)目“控制器”的代碼文件,在視圖和模型中起承上啟下的作用
5)存放整個(gè)項(xiàng)目的“模型”代碼文件,包括實(shí)體類部分,數(shù)據(jù)訪問(wèn)部分,業(yè)務(wù)邏輯部分(純C#代碼)
6)Views:存放整個(gè)項(xiàng)目的視圖代碼文件(網(wǎng)頁(yè)/界面)
2.重要文件說(shuō)明
a>Views下面的Web.config:是整個(gè)視圖的配置文件 b>根目錄下面的Web.config:是作用整個(gè)項(xiàng)目的配置文件
四.控制器的動(dòng)作和任務(wù)方法的分析./ 7
五.ASP.NET MVC中的約定規(guī)則
如果創(chuàng)建的視圖不是和控制器同名,則需要在View方法中添加視圖的名字
<二>ASP.NET 進(jìn)階 / 7
一.ASP.NET MVC中視圖的簡(jiǎn)單使用 1.視圖 / 7
2.實(shí)現(xiàn)計(jì)算器的MVC案列 1)創(chuàng)建項(xiàng)目
2)在Model中添加類,并創(chuàng)建計(jì)算方法-------M
3)在Views視圖中建立視圖頁(yè)面,利用form表單提交數(shù)據(jù)-------V
4)添加控制器方法---------C / 7
5)檢查路由配置并修改 / 7
第五篇:ASP.NET MVC總結(jié)
ASP.NET MVC總結(jié)
一、概述
1、單元測(cè)試的NUnit, MBUnit, MSTest, XUnit以及其他的框架
2、ASP.NET MVC 應(yīng)用的默認(rèn)目錄結(jié)構(gòu)有三個(gè)頂層目錄: Controllers、Models、Views,控制器類置于 /Controllers 目錄之中,數(shù)據(jù)模型類置于/Models目錄之中,視圖模板置于 /Views 目錄之中。
ASP.NET MVC框架并不強(qiáng)迫你總是使用這個(gè)結(jié)構(gòu)。
二、URL映射到Controller類
1、把URL映射到Controller類
在大多數(shù)web框架(ASP, PHP, JSP, ASP.NET WebForms等等)里,到來(lái)的URL一般都映射到保存在硬盤上的模板文件。
MVC框架一般以不同的方式把URL映射到服務(wù)器代碼類(Controllers(控制器))上,這個(gè)類負(fù)責(zé)處理到來(lái)的請(qǐng)求,處理用戶輸入和交互,執(zhí)行基于輸入和交互的相應(yīng)的應(yīng)用和數(shù)據(jù)邏輯。然后,一個(gè)Controller類調(diào)用單獨(dú)的“視圖”組件,該組件負(fù)責(zé)生成請(qǐng)求的實(shí)際的HTML輸出。
在如何把URL映射到Controller類方面,該引擎提供了很多靈活性。
ASP.NET MVC URL映射routing引擎的路徑選擇規(guī)則:(1)選出一個(gè)Controller來(lái)運(yùn)行。(2)把URL里定義的變量,傳遞給Controller的Action。
2、映射到控制器類的默認(rèn)ASP.NET MVC URL Routing規(guī)則
當(dāng)你創(chuàng)建一個(gè)MVC項(xiàng)目時(shí),默認(rèn)的路徑映射規(guī)則擁有這樣的格式:“/[controller]/[action]/[id]”。
(1)controller:把Url的開(kāi)始部分映射到類上,該類名稱遵循UrlPathController的模式。
(2)action:controller里的action方法。ASP.NET框架根據(jù)URL routing規(guī)則來(lái)自動(dòng)調(diào)用適當(dāng)?shù)腶ction方法來(lái)執(zhí)行。還可以覆蓋Controller基類中的“Execute”方法,手工編寫我們自己的 if/else/切換邏輯,對(duì)照用戶請(qǐng)求的URL,然后執(zhí)行適當(dāng)?shù)倪壿媮?lái)處理這個(gè)請(qǐng)求。
(3)id:如果URL中在控制器名稱和action名稱之后還有任何子路徑的話,在默認(rèn)情形下,它將作為一個(gè)名為“id”的參數(shù)處理,會(huì)自動(dòng)地作為一個(gè)方法參數(shù)傳給我們的控制器action方法。如果你的action方法有個(gè)參數(shù)的話,MVC框架會(huì)檢查進(jìn)來(lái)的請(qǐng)求的數(shù)據(jù),看是否有個(gè)同樣名稱的對(duì)應(yīng)的HTTP請(qǐng)求值。如果有的話,它會(huì)自動(dòng)將其作為參數(shù)傳入action方法。
Controller基類呈現(xiàn)了可以使用的Request 和Response對(duì)象,它們是基于接口(interface)的。
3、使用視圖顯示界面
action方法在調(diào)用RenderView()方法時(shí)提供的跟視圖有關(guān)的數(shù)據(jù)對(duì)象,來(lái)顯示適當(dāng)?shù)慕缑妫?/p>
在上面的代碼例子里,RenderView方法的“Categories”參數(shù)表示我們要顯示的視圖名稱,第二個(gè)參數(shù)是我們要傳給視圖對(duì)象并要視圖對(duì)象據(jù)此顯示適當(dāng)HTML界面的分類對(duì)象的列表。
ASP.NET MVC框架支持任何模板引擎(包括象NVelocity, Brail,以及你自己想要編寫的任何模板引擎)來(lái)幫助生成界面。在默認(rèn)情形下,ASP.NET MVC 框架使用ASP.NET中現(xiàn)有的ASP.NET 頁(yè)面(.aspx), 母版頁(yè)(.master), 和用戶控件(.ascx)。
4、Controller.RedirectToAction ASP.NET MVC還提供了Controller.RedirectToAction()輔助方法,你可以在控制器里使用來(lái)進(jìn)行轉(zhuǎn)向操作(URL是使用URL路徑選擇系統(tǒng)計(jì)算出來(lái)的)。例如,當(dāng)在控制器里調(diào)用下面代碼時(shí):
在內(nèi)部,它會(huì)生成一個(gè)對(duì)Response.Redirect(“/Search/Beverages”)的調(diào)用。
二、單元測(cè)試 Public void Detail(){ ProductsController controller=new ProductsController();//ProductsController里注入了一個(gè)偽(dummy)“ViewFactory”實(shí)現(xiàn)的。覆蓋了默認(rèn)的ViewFactory,否則,默認(rèn)的ViewFactory會(huì)創(chuàng)建和顯示我們的視圖。我們可以使用這個(gè)測(cè)試ViewFactory實(shí)現(xiàn)來(lái)做隔離,TestViewEngine testView=new TestViewRngine();Controller.viewFactory=testView;Controller.Detail(3);Assert.AreEqual(typeof(Product),testView.View.ViewData.GetType(),”Product object passed to View”)
Assert.AreEqual(3,testview.view.GetViewData().ProductID,”Correct Product object Passed to view”);
Assert.AreEqual(“Detail’,testView.View.ViewName,”Correct View Readered”); }
三、View
1、理解/Views目錄結(jié)構(gòu)
Shared:存放公用的母版頁(yè)、用戶控件和視圖的地點(diǎn)。ControllerName(控制器名):控制器所用的視圖。執(zhí)行過(guò)程:當(dāng)在Controller中調(diào)用 RenderView(string viewName)方法時(shí),MVC框架會(huì)自動(dòng)地首先在ViewsControllerName 目錄里尋找對(duì)應(yīng)的.aspx 或.ascx視圖模板,如果它找不到適當(dāng)?shù)囊晥D模板,然后它會(huì)在 ViewsShared目錄尋找。
2、視圖
MVC視圖頁(yè)默認(rèn)是從System.Web.Mvc.ViewPage 基類繼承而來(lái)的,該基類提供了構(gòu)建界面時(shí)所用的許多特定于MVC的輔助方法和屬性。ViewPage的其中一個(gè)屬性名叫“ViewData”,通過(guò)它,可以訪問(wèn)Controller作為參數(shù)傳給 RenderView()方法的特定于視圖的數(shù)據(jù)對(duì)象。從你的視圖里,你可以后期綁定或以強(qiáng)類型的方式訪問(wèn)“ViewData”。如果你的視圖是從ViewPage繼承而來(lái),那么ViewData屬性是個(gè)后期綁定的字典。如果你的視圖是從基于泛型的ViewPage繼承而來(lái),其中T表示Controller傳給視圖的ViewData的數(shù)據(jù)對(duì)象的類型,那么ViewData屬性就是強(qiáng)類型的,匹配你的Controller傳入的數(shù)據(jù)的類型。顯示數(shù)據(jù): 1)在.aspx 文件里使用行內(nèi)代碼
使用
和 的句法來(lái)在html 標(biāo)識(shí)內(nèi)嵌入顯示代碼
2)在.aspx 文件中使用服務(wù)器控件,然后在后臺(tái)代碼里使用數(shù)據(jù)綁定。
9、Html對(duì)象是 ViewPage 基類的一個(gè)輔助屬性,ActionLink方法是它的一個(gè)輔助方法,它方便你動(dòng)態(tài)地生成連回到控制器的action 方法的HTML超鏈接。
第一個(gè)參數(shù)表示要顯示的超鏈接的內(nèi)容,第二個(gè)參數(shù)是個(gè)匿名對(duì)象,它代表用以生成實(shí)際URL的一串值,你可以認(rèn)為它是生成字典的一個(gè)比較干凈的方式。如果routing規(guī)則是象這樣的: /// 那么在ProductController的Category視圖里編寫這樣的代碼時(shí):
Url.Action 除了使用Html.ActionLink外,ASP.NET MVC還有個(gè)Url.Action()視圖輔助方法。該方法生成原生的字符串URL,然后你可以任何方式來(lái)使用它們。例如,下面的代碼片段:
會(huì)使用URL路徑選擇系統(tǒng)返回下面這個(gè)原生的URL(而不是包裝在元素里):
使用Lambda表達(dá)式從路徑選擇系統(tǒng)構(gòu)建輸出的URL ASP.NET MVC框架還支持使用強(qiáng)類型機(jī)制創(chuàng)建action路徑的能力,這些強(qiáng)類型機(jī)制為URL輔助方法提供了編譯時(shí)檢查和intellisense。這是通過(guò)使用泛型和新的VB和C#對(duì)Lambda表達(dá)式的支持來(lái)實(shí)現(xiàn)的。下面這個(gè)匿名類型 ActionLink 調(diào)用:
也可以寫成:
方法 1:使用 Controller.ViewData 字典來(lái)傳遞ViewData Controller基類有個(gè)ViewData字典屬性,可以用來(lái)填充你要傳給視圖的數(shù)據(jù)。你使用鍵/值模式將對(duì)象加入 ViewData 字典。
ViewPage基類提供一個(gè)ViewData字典屬性,我們可以在視圖網(wǎng)頁(yè)里訪問(wèn)由控制器添加的數(shù)據(jù)對(duì)象。然后我們可以取出這些數(shù)據(jù)對(duì)象,使用它們來(lái)顯示HTML輸出,可以用服務(wù)器控件的方式,或者用
顯示代碼的方式。注: 因?yàn)閂iewData的類型是含有“objects”的字典,為了對(duì)它使用foreach語(yǔ)句,我們需要將ViewData[“Products”]的類型轉(zhuǎn)換成 List 或者 IEnumerable。我在頁(yè)面上引用了System.Collections.Generic 和 MyStore.Models 命名空間 以避免輸入 List 和 Product 類型的完整名稱。注: 上面使用了“var”關(guān)鍵詞,這是VS 2008中新的 C# 和 VB “類型推斷”特性的一個(gè)例子(在這里閱讀我以前的相關(guān)貼子)。因?yàn)槲覀儗iewData[“Products”] 轉(zhuǎn)換成了 List,我們?cè)?List.aspx 文件中的 prduct 變量上得到了完整的intellisense。
方法 2:使用強(qiáng)類型類來(lái)傳遞ViewData
在第一個(gè)預(yù)覽版中,只有“ActionLink”方法是內(nèi)置于System.Web.Extensions(目前實(shí)現(xiàn)核心ASP.NET MVC框架的程序集)中的。但我們還將有一個(gè)單獨(dú)的 “MVCToolkit” 下載,你可以加到你的項(xiàng)目中,來(lái)得到你可以在第一個(gè)預(yù)覽版中使用的的幾十個(gè)輔助方法。要安裝MVCToolkit HTML輔助方法的話,只要將MVCToolkit.dll程序集添加為你的項(xiàng)目的引用即可。Html.Select()Html.TextBox(“”,ViewData.Product.unitPrice)MVCToolkit程序集,你可以利用在System.Web.Mvc.BindingHelpers命名空間下實(shí)現(xiàn)的一個(gè)有用的擴(kuò)展方法,來(lái)對(duì)此代碼作些清理。這個(gè)擴(kuò)展方法叫做“UpdateFrom”,可以用在任何.NET 對(duì)象上。它接受一個(gè)字典作為參數(shù),然后,它會(huì)對(duì)任何匹配該對(duì)象的公開(kāi)屬性的鍵,自動(dòng)對(duì)本身進(jìn)行屬性賦值。Product product=new Product();Product.UpdateFrom(request.Form);//把客戶端的數(shù)據(jù)填充到product對(duì)象中了。
注: 如果你因?yàn)榘踩脑颍胍鞔_些,只允許某些屬性可以更新的話,你還可以向UpdateFrom方法傳入一個(gè)可以更新的屬性名稱的字符串?dāng)?shù)組:攔截器(Action Filter)
1、橫切于ASP.NET MVC執(zhí)行過(guò)程。在ASP.NET MVC執(zhí)行中提供擴(kuò)展功能(HttpModule)??勺鳌叭魏巍笔录?日志、緩存、異常處理)
2、成員:
(1)OnActionExecuting:參數(shù)ActionExecutingContext(ActionMethod、ActionParameters、Cancel、Result)。身份驗(yàn)證、輸出服務(wù)器端緩存。(2)OnActionExecuted:參數(shù)ActionExecutingContext(ActionMethod、Exception、ExceptionHandled、Result)。異常處理(3)OnResultExecuting:參數(shù)ResultExecutingContext(Cancel、Result)。設(shè)置客戶端緩存、服務(wù)器端壓縮。
(4)OnResultExecuted:參數(shù)ResultExecutingContext(Exception、ExceptionHandled、Result)。異常處理、頁(yè)面尾部輸出調(diào)試信息。(5)Order(調(diào)用順序)實(shí)現(xiàn)與使用:繼承ActionFilterAttribute類、覆蓋必要的方法、標(biāo)記在需要操作的Action上。IActionFilter(PV4):
ActionFilterAttribute:FilterAttribute、IActionFilter、IResultFilter。
HandleErrorAttribute:FilterAttribute、IExceptionFilter。IResultFilter(PV4): IExceptionFilter(PV4):驗(yàn)證 IAuthorizationFilter:授權(quán)
3、發(fā)布預(yù)制過(guò)濾器(PV4):
OutputCache:緩存輸出,VaryByParam:根據(jù)指定參數(shù)進(jìn)行。緩存整個(gè)頁(yè)面。
HandleError:捕獲特定異常,可指定出錯(cuò)View(默認(rèn)為Error),View查找順序:Controller目錄àShared目錄。[handleError(ExceptionType=type(SqlException,View=””))] Authorize:授權(quán)。
4、ActionInvoker的改進(jìn)(PV4):