就像是.NET Framework WebApi与.NET Core WebApi同样,.NET Framework MVC与.NET Core MVC的区别,也是框架的之间的区别。本系列先首先从.NET Framework MVC介绍,后面再去介绍.NET Core MVCweb
狭义MVC:后端
MVC是web开发框架设计模式
M:Models,数据的传递模型,普通的实体框架
V:View,用户看到的视图模型前后端分离
C:Controller,决定用户使用哪一个视图,还能调用逻辑计算,里面的方法叫Action函数
广义MVC:性能
Model、VIew、Controller网站
V:界面this
C:控制,把M和V链接起来spa
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是个动态类型--运行时检测--编译时随便你写利用委托的,性能比反射高,能够提供便利弱类型语言的特色,方便作一些特殊处理