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

由于之前在項目中也使用MVC進行開發,但是具體是那個版本就不是很清楚了,但是我覺得大體的思想是相同的,只是版本高的在版本低的基礎上增加了一些更加方便操作的東西。下面是我學習ASP.NET MVC5高級編程(5)的一些知識筆記,有些簡單的操作沒有進行記錄,一些知識點就使用思維導圖來寫出大體的知識架構。

Andyahui

MVC5是完全Bin部署的,也就是說我們最后發布的時候只是將Bin文件下面的應用程序的程序集發布就可以,對于服務器來說只需要有.NET 4.5就可以進行安裝了。

一條至理名言“約定優于配置”

這是在使用MVC時經常聽到的話,之前不懂是什么意思,現在隨著編碼次數的增多,對于這句話也有了自己的理解,大體的意思就是說按照人家的之前的約定,不要隨意調整項目中的目錄,結構。也對現在整個MVC項目的架構都搭建好了,如果說需要調整那么可能是一個大的工程,我們需要對整個底層使用到的相關地方都需要做更改?,F在的整個結構有一個理念是“使應用程序的關注點分離,讓開發人員更加方便的開發?!?/p>

MVC提供的是方法調用的結果,不是動態生成頁面(腳本)。

在Web中使用MVC時,應用MVC模式要求Web應用程序中的每一個用戶輸入只采用請求的方式,在實際的開發中,每個請求都被路由到控制器的一個方法上進行操作,該控制器全權負責解釋這些請求,有可能會操作模型,然后選擇一個視圖反饋給用戶。

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

關于值的傳遞我們知道有ViewBag,ViewData,ViewDataDictionary,模型(強類型)等形式進行傳遞,
其實值都是通過ViewDataDictionary來傳遞的,數據從控制器傳送到視圖是通過一個名為ViewData的ViewDataDictionary(一個字典類),還有就是ViewBag是ViewData的動態封裝器;
動態值不能作為一個參數傳遞給擴展方法,因為C#編譯器為了選擇正確的擴展方法,在編譯時必須知道每個參數的真正類型。
使用強類型模型對象,必須使所有的數據都是強類型數據,以便在視圖中可以使用智能感知。
若是一般的類,在視圖中需要使用IEnumerable<>來指定,

    @model IEnumerable<RegisterExternalLoginModel>

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

     @model RegisterExternalLoginModel

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

@Razor視圖中的重要知識點

  • :通過”@”來在視圖中寫C#代碼,同時編譯器也會將其看待為后臺語言進行編譯,運行。
  • :可以通過( )來區分一些常見的二義性。
  • :@@兩個轉義為一個@符號;
  • :可以使用@{ }來區分代碼塊;
  • :@Html.Raw():按照HTML格式來進行編碼輸出;
  • :@Html.RenderPartial(“Indx”);此區域放置局部視圖,不經過控制器,可以往其傳遞model,這樣局部視圖中的model就是我們傳遞的;還有就是局部視圖不能指定布局。只能說像之前的那樣嵌套進去。
  • :@Hmtl.RenderAction();這個和上面是有區別的,是需要經過控制器處理的;
  • :@* 注釋*@,此視圖中的注釋寫法;
  • :調用泛型方法<>需要注意,可以使用@()來區分。
  • :@Html.RenderBody(),這個是在布局中定義的,最后是在此處嵌套網頁。
  • :@Html.RenderSection(“Footer”);設置其下面的節,可以在其網頁中顯示出來這個節。
  • :@Html.DisplayFor();視圖的輸出采用HTML輔助方法。
  • :@Html.DropDownList();下拉列表.這里設置的是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>
}

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

對于復雜的應用程序,我們想探討不同的架構和設計模式來滿足我們的需求,領域驅動設計(DDD)是一種團隊使用的方法,可用來處理復雜的應用程序,命令查詢職責分離(CQRS)也是一種團隊開發模式,它在復雜的應用程序開發中占據主要的份額。

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

    這里的Include方法可以看成減少在構建完整模型中需要的查詢數據的一個優化。

模型綁定

之前只是知道在形參中傳遞模型(類),我們不需要管數據是如何過來的,底層的架構已經幫我們封裝好了,但是現在看書才發現之前了解的都有皮毛,沒有一點知識點。這個在驗證模型綁定之前有一個模型的驗證,ModelState.IsValid()通過這個來完成服務端的驗證,這個之前還有一個通過模型綁定器的東西。

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

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,923評論 6 342
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,830評論 18 139
  • 原文地址:http://www.cnblogs.com/powertoolsteam/p/MVC_knowledg...
    寒劍飄零閱讀 8,628評論 5 170
  • “真的很抱歉,我現在只想專注于學習,不想談戀愛?!闭驹谥芊迳媲暗谋槐戆椎呐f道,說完她就一溜兒煙跑掉了,只剩...
    世界上唯一的花閱讀 325評論 0 0
  • 一個想圓夢的人,這個名字想了很久,雖然有點長。本意是一個掉進大染坊人,有一天翻然悔悟覺著這樣的一生會有些荒唐,得...
    一個想圓夢的人閱讀 230評論 0 1