ASP.NET MVC5 高級編程-學習日記-第一章 入門

来源:https://www.cnblogs.com/Aries-rong/archive/2018/12/13/10108194.html
-Advertisement-
Play Games

1.1 ASP.NET MVC 簡介 ASP.NET是一種構建Web應用程式的框架,它將一般的MVC(Model-View-Controller)模式應用於ASP.NET框架。 1.1.1 MVC模式簡介 MVC將應用程式的用戶界面(User Interface, UI)分為三個主要部分: 模型:一 ...


1.1 ASP.NET MVC 簡介

 ASP.NET是一種構建Web應用程式的框架,它將一般的MVC(Model-View-Controller)模式應用於ASP.NET框架。

1.1.1 MVC模式簡介

MVC將應用程式的用戶界面(User Interface, UI)分為三個主要部分:

  • 模型:一組類,描述了要處理的數據以及修改和操作數據的業務規則。
  • 視圖:定義應用程式用戶界面的顯示方式。
  • 控制器:一組類,用於處理來自用戶、整個應用程式流以及特定應用程式邏輯的通信。

 MVC作為用戶界面模式


 註意這裡的MVC指的是一種用戶界面模式。MVC模式是處理用戶交互的一種解決方案,它並不處理應用程式關註的其他問題,如數據訪問、服務交互等。

1.1.2 MVC在Web框架中的應用

MVC模式經常應用於Web程式設計中。在ASP.NET MVC中,MVC三個主要部分的定義大致如下:

  • 模型:模型是描述程式設計人員感興趣問題域的一些類,這些類通常封裝存儲在資料庫中的數據,以及操作這些數據和執行特定域業務邏輯的代碼。在ASP.NET MVC中,模型就像使用了某種工具的數據訪問層(Data Access Layer),這種工具包括實體框架(Entity Framework)或者與包含特定域邏輯的自定義代碼組合在一起的NHibernate。
  • 視圖:一個動態生成HTML頁面的模板。
  • 控制器:一個協助視圖和模型之間關係的特殊類。它響應用戶輸入,與模型進行對話,並決定呈現哪個視圖(如果有的話)。在ASP.NET MVC中,這個類文件通常以尾碼名Controller表示。

註意  MVC是一種高級架構模式,它的使用取決於具體應用環境。ASP.NET MVC的上下文是問題域(一個無狀態的Web環境)和宿主系統(ASP.NET)。

ASP.NET MVC註重應用MVC模式來提供一個運行在.NET平臺上的強大Web開發框架,上下文則是其強大原因的一部分。

ASP.NET採用了大部分覬覦MVC的Web框架所使用的一些基本原則:

  • 約定優於配置(convention over configuration)
  • 不重覆(又名DRY原則)
  • 儘量保持可插拔性(pluggability)
  • 儘量為開發人員提供幫助,單必要時允許開發人員自由發揮。

1.2 ASP.NET MVC5概述

ASP.NET MVC5主要特性:

  • One ASP.NET
  • 新的Web項目體驗
  • ASP.NET Identity
  • Bootstrap模板
  • 特性路由
  • ASP.NET基架
  • 身份驗證過濾器
  • 過濾器重寫

1.2.1 One ASP.NET

在MVC5中,只有一種ASP.NET項目類型。在Visual Studio2013中創建新的Web應用程式時,沒有複雜的選項,只有Web應用程式。不只是在一開始創建ASP.NET項目時才支持這麼做:在不斷開發的過程中,可以添加對其他框架的支持,因為工具和特性都是作為NuGet包提供的。例如,如果開發過程中改變了想法,就可以使用ASP.NET基架向任何現有的ASP.NET應用程式添加MVC。

1.2.2 ASP.NET Identity

ASP.NET Identity的一些主要的新特性:

  • One ASP.NET Identity系統:為了支持前面介紹的One ASP.NET這個關註點,新的ASP.NET Identity被設計為可在整個ASP.NET家族中使用。
  • 控制用戶資料數據:ASP.NET Identity使得存儲額外的用戶信息很容易,只需要在代表用戶的模型類中添加屬性即可。
  • 控制優於持久化:預設情況下,所有用戶信息都使用Entity Framework Code First存儲,所以可以獲得我們在使用Entity Framework Code First時已經習慣了的簡單性和控制。但是,也可以插入其他任何我們希望使用的持久化機制,包括其他ORM、資料庫、自定義的Web服務等。
  • 可測試性:ASP.NET Identity API是使用介面設計的,所以允許為用戶相關的應用程式代碼編寫單元測試。
  • 基於聲明:雖然ASP.NET Identity仍然支持用戶角色,但是也支持基於聲明的身份驗證。
  • 登錄提供器:ASP.NET Identity並不是只關註用戶名/密碼身份驗證,而是也理解用戶經常通過社交服務-提供器和Windows Azure Active Directory進行身份驗證。
  • NuGet分發:AP.NET Identity 作為NuGet包安裝到應用程式中。這意味著可以單獨安裝ASP.NET Identity,並且通過更新一個NuGet包,就可以把它升級到新版本。 

1.3 安裝MVC5和創建應用程式

1.3.1 創建ASP.NET MVC5應用程式 

創建一個新的MVC項目的步驟如下:

(1).選擇File|New Project選項。

(2).在New Project對話框左欄的Installed Templates部分,選擇Visual C#|Web模板列表,這件在中間欄顯示Web應用長須類型列表。

(3).選擇ASP.NET Web Application,將應用程式命名為MvcMusicStore,然後單擊OK按鈕。

1.3.2 New ASP.NET Project對話框

創建一個新的MVC5應用程式後,將會出現New ASP.NET Project對話框。該對話框列出了所有ASP.NET應用程式共有的一些選項:

  • 選擇模板
  • 添加框架文件夾和核心引用
  • 添加單元測試
  • 更改身份驗證
  • Microsoft Azure

前兩個選項(Select a template和Add folders and core references for)共同起作用。模板選擇了一個起點,然後使用框架覆選框來添加對Web Forms、MVC和Web API的支持。這意味著我們可以選擇一個MVC模板,然後添加Web Forms支持,或者可以選擇空模板,添加對框架的支持。這種功能不止在創建新項目時可以使用:任何時候都可以添加對任意框架的支持,因為框架文件夾和核心引用是通過NutGet包添加的。

1.選擇一種應用程式模板

  • MVC:MVC模板設置一個標準的、帶幾個視圖的Home Controller,配置站點佈局,並包含一個MVC特定的Project_Readme.html頁面。
  • Empty:空模板會建立一個空的項目骨架。得到的文件包括一個web.config(包含一些預設的網站配置設置)和創建項目所需的幾個程式集引用,但是僅此而已。這個模板不會提供代碼,不包含JavaScript或CSS腳本,甚至不會提供一個動態地HTML文件。
  • Web Forms:Web Forms模板為ASP.NET Web Forms開發發下基礎。
  • Single Page Application:Single Page Application模板創建的應用程式主要通過JavaScript請求Web API服務驅動,而不是採用傳統的Web頁面請求/相應周期。最初的HTML由一個MVC Home Controller提供,其餘的伺服器端交互則有一個Web API控制器處理。次模板使用Knockout.js庫來幫助管理瀏覽器中的交互。
  • Facebook:這個模板方便了構建一個Facebook“畫布”應用程式,也就是看上去托管在Facebook網站上的一個Web應用程式。
  • Azure Mobile Service:Azure Mobile Service現在支持Web API服務,所以使用這個模板能夠比較容易地創建針對Azure Mobile Service的Web API。

2.測試

 所有的內置項目模板都有一個選項,用來使用樣本單元測試創建單元測試項目。

3.配置身份驗證

 可選擇身份驗證方法:

  • No Authentication:用戶不需要身份驗證的應用程式,例如沒有管理單元的公共網站。
  • Individual User Accounts:用於在本地存儲用戶配置文件的應用程式。支持用戶名/密碼賬號,以及社交認證提供程式。
  • Organizational Accounts:用於通過某種形式的活動目錄進行身份驗證的賬戶。
  • Windows Authentication:用於內部網應用程式

新MVC項目在應用程式的根目錄下包含Project_Readme.html文件。創建項目時間自動顯示這個文件。這是一個完全自包含的文件----所有的樣式都通過HTML樣式標簽包含進來,所以使用完該文件後可以刪除它。

1.4 ASP.NET MVC應用程式的結構

 用VS創建了一個新的ASP.NET MVC應用程式後,將自動向這個項目中添加一些文件和目錄。

    

 這些由VS添加的預設文件提供了一個可以運行的應用程式的基本結構,完整地包括了首頁、關於首頁、賬戶登錄/退出/註冊頁面以及一個未經處理的錯誤頁面(所有頁面彼此聯繫起來,可以直接使用)。

 1.4.1 ASP.NET MVC和約定

預設情況下,ASP.NET MVC應用程式對約定的依賴性很強。這樣就避免了開發人員配置和指定一些項。

ASP.NET MVC的約定非常容易理解,下麵是預期的程式結構:

  • 每個Controller類的名字以Controller結尾。
  • 應用程式的所有視圖放在單獨的Views目錄下。
  • 控制器使用的視圖實在Views主目錄的一個子目錄中,這個子目錄是根據控制器名稱來命名的。 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在我們開發Winform界面的時候,往往需要綁定數據字典操作,也就是綁定一些下拉列表或者一些列表顯示等,以便我們方便選擇數據操作,常見的字典綁定操作就是對下拉列表的處理,本篇隨筆是基於DevExpress界面的一些處理操作,原理也適用於常規Winform界面或者DotNetBar控制項界面處理。另外對... ...
  • 在同一個功能變數名稱下有很多子系統 如:a.giant.com b.giant.com c.giant.com等 但是這些系統都是giant.com這個子域。 這樣的情況就可以在不引用其它框架的情況下,直接基於Cookie實現同域單點登錄SSO 註:用ID4,OAuth,其它SSO框架也同樣可以實現。本文不 ...
  • 什麼是遞歸函數? 任何一個方法既可以調用其他方法又可以調用自己,而當這個方法調用自己時,我們就叫它遞歸函數或者遞歸方法! 說白了,就是調用自己。 通常遞歸有兩個特點: 1.遞歸方法一直會調用自己直到某些條件滿足,也就是說一定要有出口; 2.遞歸方法會有一些參數,而它會把這些新的參數值傳遞給自己;(自 ...
  • 任務調度在我們日常開發過程中非常常見,比如:每天晚上0點自動執行某某操作;每周三晚上2點執行某某操作;......當然,我們處理這類問題的方法也有很多,比如:sql的自動任務;windows上創建任務計劃;寫windows服務等等。如果系統比較複雜,相互調用比較頻繁,任務非常多,幾百上千條甚至上萬條 ...
  • 索引: 商業開發實戰總結 一.API 列表 .FirstOrDefaultAsync() .FirstOrDefaultAsync<M>() 如: .FirstOrDefaultAsync<Agent>() , 用於 單表/多表連接 查詢. .FirstOrDefaultAsync<VM>() 如: ...
  • assign assign指令在前面已經使用了多次,它用於為該模板頁面創建或替換一個頂層變數, assign指令的用法有多種,包含創建或替換一個頂層變數,或者創建或替換多個變數等, 它的最簡單的語法如下: <#assign name=value [in namespacehash]>, 這個用法用於 ...
  • ajax post調用WebMethed報錯,返回的信息如下: {“Message”:“處理請求時出錯”,“StackTrace”:“”,“ExceptionType”:“”} 查了一下WebMethed里的方法沒有問題,網上找了好久也沒有什麼解決方案。 後來自己發現可能是返回的json文本太長了, ...
  • 寫在前面 之前有個項目是用asp.net webapi做的,pc和移動端共用api的服務介面,balabala,正好最近在看關於asp.net core方面的資料,各種依賴註入,中間件,處理管道等,而且把webapi和mvc融合到了一起,就想著把之前那個項目移到asp.net core上。 由於之前 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...