ASP.NET MVC5----基本用法

由于之前在項目中也使用MVC進(jìn)行開發(fā)号阿,但是具體是那個版本就不是很清楚了,但是我覺得大體的思想是相同的揭蜒,只是版本高的在版本低的基礎(chǔ)上增加了一些更加方便操作的東西其监。下面是我學(xué)習(xí)ASP.NET MVC5高級編程(5)的一些知識筆記,有些簡單的操作沒有進(jìn)行記錄乾忱,一些知識點就使用思維導(dǎo)圖來寫出大體的知識架構(gòu)讥珍。

Andyahui

MVC5是完全Bin部署的,也就是說我們最后發(fā)布的時候只是將Bin文件下面的應(yīng)用程序的程序集發(fā)布就可以窄瘟,對于服務(wù)器來說只需要有.NET 4.5就可以進(jìn)行安裝了衷佃。

一條至理名言“約定優(yōu)于配置”

這是在使用MVC時經(jīng)常聽到的話,之前不懂是什么意思蹄葱,現(xiàn)在隨著編碼次數(shù)的增多纲酗,對于這句話也有了自己的理解,大體的意思就是說按照人家的之前的約定新蟆,不要隨意調(diào)整項目中的目錄觅赊,結(jié)構(gòu)。也對現(xiàn)在整個MVC項目的架構(gòu)都搭建好了琼稻,如果說需要調(diào)整那么可能是一個大的工程吮螺,我們需要對整個底層使用到的相關(guān)地方都需要做更改。現(xiàn)在的整個結(jié)構(gòu)有一個理念是“使應(yīng)用程序的關(guān)注點分離帕翻,讓開發(fā)人員更加方便的開發(fā)鸠补。”

MVC提供的是方法調(diào)用的結(jié)果嘀掸,不是動態(tài)生成頁面(腳本)紫岩。

在Web中使用MVC時,應(yīng)用MVC模式要求Web應(yīng)用程序中的每一個用戶輸入只采用請求的方式睬塌,在實際的開發(fā)中泉蝌,每個請求都被路由到控制器的一個方法上進(jìn)行操作,該控制器全權(quán)負(fù)責(zé)解釋這些請求揩晴,有可能會操作模型勋陪,然后選擇一個視圖反饋給用戶。

MVC5中控制器和視圖之間值得傳遞

關(guān)于值的傳遞我們知道有ViewBag,ViewData,ViewDataDictionary硫兰,模型(強類型)等形式進(jìn)行傳遞诅愚,
其實值都是通過ViewDataDictionary來傳遞的,數(shù)據(jù)從控制器傳送到視圖是通過一個名為ViewData的ViewDataDictionary(一個字典類)劫映,還有就是ViewBag是ViewData的動態(tài)封裝器违孝;
動態(tài)值不能作為一個參數(shù)傳遞給擴(kuò)展方法,因為C#編譯器為了選擇正確的擴(kuò)展方法泳赋,在編譯時必須知道每個參數(shù)的真正類型雌桑。
使用強類型模型對象,必須使所有的數(shù)據(jù)都是強類型數(shù)據(jù)摹蘑,以便在視圖中可以使用智能感知筹燕。
若是一般的類,在視圖中需要使用IEnumerable<>來指定衅鹿,

    @model IEnumerable<RegisterExternalLoginModel>

要是控制器傳遞過來的數(shù)據(jù)本身就是IEnumerable或者其繼承它的類型撒踪,那么就只需要寫

     @model RegisterExternalLoginModel

就可以出現(xiàn)了。
至于說ViewData[“”]和ViewBag.大渤;使用方法簡單制妄,但是建議大家少使用, 尤其是在一些大的項目里面泵三,我們完全可以將數(shù)據(jù)封裝到模型中耕捞,這樣通過模型在控制器和視圖之間進(jìn)行數(shù)據(jù)的傳遞。

@Razor視圖中的重要知識點

  • :通過”@”來在視圖中寫C#代碼烫幕,同時編譯器也會將其看待為后臺語言進(jìn)行編譯俺抽,運行。
  • :可以通過( )來區(qū)分一些常見的二義性较曼。
  • :@@兩個轉(zhuǎn)義為一個@符號磷斧;
  • :可以使用@{ }來區(qū)分代碼塊;
  • :@Html.Raw():按照HTML格式來進(jìn)行編碼輸出捷犹;
  • :@Html.RenderPartial(“Indx”);此區(qū)域放置局部視圖弛饭,不經(jīng)過控制器,可以往其傳遞model萍歉,這樣局部視圖中的model就是我們傳遞的侣颂;還有就是局部視圖不能指定布局。只能說像之前的那樣嵌套進(jìn)去枪孩。
  • :@Hmtl.RenderAction();這個和上面是有區(qū)別的憔晒,是需要經(jīng)過控制器處理的;
  • :@* 注釋*@蔑舞,此視圖中的注釋寫法丛晌;
  • :調(diào)用泛型方法<>需要注意,可以使用@()來區(qū)分斗幼。
  • :@Html.RenderBody()澎蛛,這個是在布局中定義的,最后是在此處嵌套網(wǎng)頁蜕窿。
  • :@Html.RenderSection(“Footer”)谋逻;設(shè)置其下面的節(jié),可以在其網(wǎng)頁中顯示出來這個節(jié)桐经。
  • :@Html.DisplayFor();視圖的輸出采用HTML輔助方法毁兆。
  • :@Html.DropDownList();下拉列表.這里設(shè)置的是selectList();
        <div id="body">
            @RenderSection("featured", required: false)
            <section class="content-wrapper main-content clear-fix">
                @RenderBody()
            </section>
        </div>

@section featured {
    <section class="featured">
        <div class="content-wrapper">
            <hgroup class="title">
                <h1>@ViewBag.Title.</h1>
                <h2>@ViewBag.Message</h2>
            </hgroup>
            <p>
                To learn more about ASP.NET MVC visit
                <a  title="ASP.NET MVC Website">http://asp.net/mvc</a>.
                The page features <mark>videos, tutorials, and samples</mark> to help you get the most from ASP.NET MVC.
                If you have any questions about ASP.NET MVC visit
                <a  title="ASP.NET MVC Forum">our forums</a>.
            </p>
        </div>
    </section>
}

這個自己定義的節(jié)點,取代我們在布局視圖中的@Html.RenderSection()阴挣;@section語法為布局中定義的一個節(jié)點指定了內(nèi)容气堕。如果想展示HTML標(biāo)簽,就返回一個System.Web.IHtmlString對象的實例。

對于復(fù)雜的應(yīng)用程序茎芭,我們想探討不同的架構(gòu)和設(shè)計模式來滿足我們的需求揖膜,領(lǐng)域驅(qū)動設(shè)計(DDD)是一種團(tuán)隊使用的方法,可用來處理復(fù)雜的應(yīng)用程序梅桩,命令查詢職責(zé)分離(CQRS)也是一種團(tuán)隊開發(fā)模式壹粟,它在復(fù)雜的應(yīng)用程序開發(fā)中占據(jù)主要的份額。

  • 查詢數(shù)據(jù)時Include()的介紹
    public ActionResult Edites()
    {
    var albums = db.albums.Include(a => a.Article).Include(a=>a.Genre);
    return View(albums.ToList());
    }
    就比如說是上面的那樣宿百,這個Include趁仙,從數(shù)據(jù)庫取出的數(shù)據(jù)采用的是預(yù)加載策略,這個就是說盡其所能地使用查詢語句加載所有數(shù)據(jù)垦页。還有一種是延遲加載雀费,這個EF在Linq查詢中只加載主要對象數(shù)據(jù),而不是去填充我們的設(shè)置的對象痊焊。這個由一個弊端盏袄,就是每次需要多加載一個,這個就是說我們在聲明類對象的時候需要前面添加Virtual標(biāo)記宋光,

    這里的Include方法可以看成減少在構(gòu)建完整模型中需要的查詢數(shù)據(jù)的一個優(yōu)化貌矿。

模型綁定

之前只是知道在形參中傳遞模型(類),我們不需要管數(shù)據(jù)是如何過來的罪佳,底層的架構(gòu)已經(jīng)幫我們封裝好了逛漫,但是現(xiàn)在看書才發(fā)現(xiàn)之前了解的都有皮毛,沒有一點知識點赘艳。這個在驗證模型綁定之前有一個模型的驗證酌毡,ModelState.IsValid()通過這個來完成服務(wù)端的驗證,這個之前還有一個通過模型綁定器的東西蕾管。

([Bind(Include=”類中的屬性”,)])枷踏;
UpdataModel();
TryUpdateModel();

這兩個也是模型綁定驗證的,在前面掰曾。第二個返回一個布爾類型的值旭蠕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市旷坦,隨后出現(xiàn)的幾起案子掏熬,更是在濱河造成了極大的恐慌,老刑警劉巖秒梅,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旗芬,死亡現(xiàn)場離奇詭異,居然都是意外死亡捆蜀,警方通過查閱死者的電腦和手機疮丛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門幔嫂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人誊薄,你說我怎么就攤上這事履恩。” “怎么了暇屋?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵似袁,是天一觀的道長洞辣。 經(jīng)常有香客問我咐刨,道長,這世上最難降的妖魔是什么扬霜? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任定鸟,我火速辦了婚禮,結(jié)果婚禮上著瓶,老公的妹妹穿的比我還像新娘联予。我一直安慰自己,他們只是感情好材原,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布沸久。 她就那樣靜靜地躺著,像睡著了一般余蟹。 火紅的嫁衣襯著肌膚如雪卷胯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天威酒,我揣著相機與錄音窑睁,去河邊找鬼。 笑死葵孤,一個胖子當(dāng)著我的面吹牛担钮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尤仍,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼箫津,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宰啦?” 一聲冷哼從身側(cè)響起苏遥,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绑莺,沒想到半個月后暖眼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡纺裁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年诫肠,在試婚紗的時候發(fā)現(xiàn)自己被綠了司澎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡栋豫,死狀恐怖挤安,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丧鸯,我是刑警寧澤蛤铜,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站丛肢,受9級特大地震影響围肥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜂怎,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一穆刻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杠步,春花似錦氢伟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至甸私,卻和暖如春诚些,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颠蕴。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工泣刹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人犀被。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓椅您,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寡键。 傳聞我的和親對象是個殘疾皇子掀泳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)西轩,斷路器员舵,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • 原文地址:http://www.cnblogs.com/powertoolsteam/p/MVC_knowledg...
    寒劍飄零閱讀 8,607評論 5 170
  • “真的很抱歉,我現(xiàn)在只想專注于學(xué)習(xí)藕畔,不想談戀愛马僻。”站在周峰生面前的被表白的女生說道注服,說完她就一溜兒煙跑掉了韭邓,只剩...
    世界上唯一的花閱讀 309評論 0 0
  • 一個想圓夢的人措近,這個名字想了很久,雖然有點長女淑。本意是一個掉進(jìn)大染坊人瞭郑,有一天翻然悔悟覺著這樣的一生會有些荒唐,得...
    一個想圓夢的人閱讀 226評論 0 1