就像是.NET Framework WebApi與.NET Core WebApi一樣,.NET Framework MVC與.NET Core MVC的區別,也是框架的之間的區別。本系列先首先從.NET Framework MVC介紹,後面再去介紹.NET Core MVC 狹義MVC: MVC是 ...
就像是.NET Framework WebApi與.NET Core WebApi一樣,.NET Framework MVC與.NET Core MVC的區別,也是框架的之間的區別。本系列先首先從.NET Framework MVC介紹,後面再去介紹.NET Core MVC
狹義MVC:
MVC是web開發框架
M:Models,數據的傳遞模型,普通的實體
V:View,用戶看到的視圖模型
C:Controller,決定用戶使用哪個視圖,還能調用邏輯計算,裡面的方法叫Action
廣義MVC:
Model、VIew、Controller
V:界面
C:控制,把M和V連接起來
M:數據和邏輯
程式的設計模式,一種設計的理念,可以有效的分離界面和業務。
首先,建立一個FirstController,
public class FirstController : Controller { public ActionResult Index() { return View(); } }
返回類型還有ViewResultBase、ViewResult、JsonResult、FilePathResult等,其實這些都繼承了ActionResult。
WebApi是返回數據的,為啥都不都用MVC算了?其實不管是aspx/ashx/WebApi/MVC,都是使用Http協議的,所以一切的請求都可以實現的。
Aspx:屬於比較重的,預設有頁面的生命周期---前後端融合,ViewState---跟C/S是一一對應的
ashx:屬於輕量級的,沒有頁面的概念
MVC:前後端分離的,C可以任意指定視圖,可以踢桃後臺多態UI
WebApi:準人做專事,管道都是獨立的;RESTFul,沒有action的概念。但是在.NET Core中,二者又融合管道了。
傳值的方式:
ViewData欄位傳值,裡面是object,需要類型轉換。ViewBag,是dynamic傳值,可以隨便屬性訪問,運行時檢測。以上二者都是會覆蓋的,後者為準。Model。傳值,適合複雜數據的傳遞,強類型。TempData,臨時數據,可以跨Action後臺傳遞,存在Session裡面,用一次就清理掉。
MasterPage,Layout,預設是_layout,可以自行指定。
Global。asax,全局式。
public class MvcApplication : System.Web.HttpApplication { private Logger logger = new Logger(typeof(MvcApplication)); protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); this.logger.Info("網站啟動了。。。"); } }
Application_Statr()全局啟動時執行,且執行一次,非常適合做初始化,也可以靜態構造函數。還可以有很多別的。
dynamic是個動態類型--運行時檢測--編譯時隨便你寫
利用委托的,性能比反射高,可以提供便利
弱類型語言的特點,方便做一些特殊處理