ASP.NET-MVC5簡明教程

簡介

本教程基于微軟ASP.NET-MVC5官方文檔修訂而成惨篱。文中將VS版本從官方文檔的VS2013修改為2015栓拜,并且增加了基礎(chǔ)內(nèi)容姓建,縮減了高級部分缓溅,形成簡明版本蛇损,以便入門。

MVC框架的演變

  • MVC1-MV4的演變可以參考如下:
  1. MVC1-MVC2
  2. MVC3-MVC4
  • MVC5是針對之前版本的一個集大成者坛怪,幾乎完美州藕,只是不推薦跨平臺。
  • MVC6是一個顛覆版本酝陈,構(gòu)建于ASP.NET5之上,為跨平臺而生毁涉。

Pre-Requirement

  • Visual Studio 2015
  • ASP.NET 4.6.1
  • IIS 7.5+

Source Code

Quick Start

Create a New MVC Project

newProject.png

newProjectWeb.png

newProjectMVC.png

Setting IISExpress

iisExpressShowAll.png

iisExpressSetting.png
  • 按F5會開始Debug沉帮,VS會直接以Attach的方式啟動IISExpress
  • 按Ctrl + F5,不debug,此時可以修改源代碼穆壕,編譯后刷新Browser頁面可以應(yīng)用新代碼
  • Ctrl + Alt + P: 可以Attach到指定的進程

Router

Add Router

routerGlobal.png

routerFormat.png
  • 按F12待牵,可以進入定義位置
  • 上圖中,url表示了Route的樣式:
  1. 默認的Controller是Home
  2. 對所有的Controller喇勋,默認的Action都是Index
  3. id是可選的

Controller

Add Controller

addController.png

addControllerMVC5.png

addControllerName.png

QureyString

  • QueryString字符串會自動傳給Action方法對應(yīng)的形參
  • 我們可以在Action方法中指定默認參數(shù)
QueryString.png

QueryStringDefault.png
  • 這里的HttpUtility.HtmlEncode 也可以寫成 Server.HtmlEncode缨该,Server是HttpUtility的一個實現(xiàn)

Validate Request

  • 如果我們輸入可能造成注入攻擊的內(nèi)容,可以看到頁面報錯川背,這個Request Validation機制和HtmlEncode無關(guān)贰拿,是在MiddleWare層做掉的。
RequestValidationError.png
  • 如果要屏蔽此報錯熄云,可以參考MSDN膨更,請注意:
  1. 針對WebForm / MVC / Web Pages有不同的改法
  2. 該步驟適用于.NET 4.5及以上版本

Encode HTML

  • 如果不使用HTMLEncode,雖然RequestValidation可以通過缴允,但我們依然無法把HtmlTag等字符注入到頁面中荚守。
HTMLEncode1.png
HTMLEncode2.png
  • 使用HTMLEncode之后,就可以了
HTMLEncode3.png

View

Add View

AddView1.png

AddView2.png

Template-CSHTML

  • Control通過View()方法關(guān)聯(lián)到CSHTML
cshtml1.png

cshtml2.png
  • CSHTML可以直接瀏覽
cshtml3.png
  • View Layout
ViewLayout1.png

ViewLayout2.png

Controller & View

  • 如果View()對應(yīng)的模板文件不存在练般,會報錯
cshtml4.png
  • 如何將Controller中的變量傳遞給View矗漾?
cshtml5.png

Model

Add Movie Model

  • Create Model Class
AddModel1.png

AddModel2.png
  • 編寫Model & DBContext
AddModel3.png

AddModel5.png
  • 可以去掉無用的引用
AddModel4.png
  • 在Web.config中添加Web.config
AddModel6.png

Add Movie Controller

  • Add Controller
AddMovieController1.png

AddMovieController2.png

AddMovieController3.png
  • 現(xiàn)在我們就可以通過WebPage操作Movie模型了
ShowMovieEditPage.png

LocalDB

  • 我們可以查看AppData里的本地數(shù)據(jù)庫文件
ShowAppData1.png
ShowAppData2.png
  • 在Server Explorer里可以打開MovieDBContext
VSDBContext1.png
  • 點擊左邊的小三角,會自動連接上
VSDBContext2.png
  • 然后可以查看表結(jié)構(gòu)和查詢數(shù)據(jù)
VSDBContext3.png

VSDBContext4.png

VSDBContext5.png

VSDBContext6.png

VSDBContext7.png

VSDBContext8.png

Publish

User Profile

  • SQL Express需要Load一個user profile薄料,但IIS7.5默認是不會Load User Profile的敞贡。所以部署到IIS(IIS7.5,2008R2)后都办,LocalDB不能被直接支持嫡锌,會報錯:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 – Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.
)

  • 可以參考:
  1. IIS論壇
  2. MSDN Blog
  • 需要在ApplicationHost.config中添加支持
<system.applicationHost>
  <applicationPools>
    <add name="testMVC" managedRuntimeVersion="v4.0">
      <processModel loadUserProfile="true" setProfileEnvironment="true"/>
    </add>
  </applicationPools>
</system.applicationHost>

LocalDB Write Permisson

  • IIS-AppPool賬號對LocalDB文件需要有寫權(quán)限
SetPermission1.png

SetPermission2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市琳钉,隨后出現(xiàn)的幾起案子势木,更是在濱河造成了極大的恐慌,老刑警劉巖歌懒,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啦桌,死亡現(xiàn)場離奇詭異,居然都是意外死亡及皂,警方通過查閱死者的電腦和手機甫男,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來验烧,“玉大人板驳,你說我怎么就攤上這事“穑” “怎么了若治?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵慨蓝,是天一觀的道長。 經(jīng)常有香客問我端幼,道長礼烈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任婆跑,我火速辦了婚禮此熬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滑进。我一直安慰自己犀忱,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布郊供。 她就那樣靜靜地躺著峡碉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驮审。 梳的紋絲不亂的頭發(fā)上鲫寄,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音疯淫,去河邊找鬼地来。 笑死,一個胖子當著我的面吹牛熙掺,可吹牛的內(nèi)容都是我干的未斑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼币绩,長吁一口氣:“原來是場噩夢啊……” “哼蜡秽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缆镣,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芽突,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后董瞻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寞蚌,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年钠糊,在試婚紗的時候發(fā)現(xiàn)自己被綠了挟秤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡抄伍,死狀恐怖艘刚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情截珍,我是刑警寧澤昔脯,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布啄糙,位于F島的核電站,受9級特大地震影響云稚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沈堡,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一静陈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诞丽,春花似錦鲸拥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懂衩,卻和暖如春撞叨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浊洞。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工牵敷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人法希。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓枷餐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苫亦。 傳聞我的和親對象是個殘疾皇子毛肋,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法屋剑,內(nèi)部類的語法润匙,繼承相關(guān)的語法,異常的語法饼丘,線程的語...
    子非魚_t_閱讀 31,645評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理趁桃,服務(wù)發(fā)現(xiàn),斷路器肄鸽,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,322評論 2 22
  • 文‖云飛揚 如若卫病,春天是最美的年華 你,就是最美的遇見 寂寞的美麗 純凈典徘,安然 靜靜的 讓枝頭在馥郁里漂染 白了 ...
    山東云飛揚閱讀 235評論 0 1
  • 今天第一次接觸Axure蟀苛,照著書上的實例開始一步一步摸索,不斷的查閱翻找逮诲,總算是搞清楚基本的原理帜平,在休息期間幽告,記錄...
    碎碎念筆記本閱讀 384評論 0 0