- 没有学习过MVC5之前,一直以为MVC中的Action是只能返回视图,现在才知道,其实Action你写的返回类型是什么,它返回的就是什么,JSON也好、文本也罢,它都一样的返回给你。这样就引出了一个问题,既然MVC也是可以返回JSON的,那么为什么还有webapi的出现。
- 以上是我的疑惑,今天听老师的讲解后,我豁然开朗,听老师授课说,他曾经见到过有人在公司使用aspx返回JSON返回各种东西给请求方,让他大开眼界。我此刻也就明白了,原来这些其实都是能返回的。
aspx:属于请求比较重,默认有页面请求生命周期——前后融合、viewstate来做数据传递与状态保持,大量的增加了请求的内容,降低了性能。跟cs一一对应的。
ashx:属于轻量级,没有页面的概念,纯粹的处理http请求。
MVC:前后分离的,C可以任意指定视图,并不像aspx一一对应cs文件。controller任意指定视图,可以一套后台,多套UI。
WebAPI:专人做专事,管道都是独立的,和MVC不一样,MVC的管道与webform的管道是一致的。与Restful风格有很大的关系,没有action
.NET Core:二者管道融合
关于传值:
- ViewData是字典传值,里面是object,需要类型转换。
- ViewBag dynamic传值,可以随便属性访问,运行时检测。 以上二者会覆盖,后者为准。
- model–适合复杂数据的的传递,强类型。
- TempData–临时数据,可以跨action后台传递,存在session里,用一次就被删除。
- view页面中所引用的命名空间可以在views下的Web.config文件中配置添加,view具体的页面中就无需引用。
<add namespace="WebRm.MVC5.Models"/> ←→等同于在页面中引用 @using WebRm.MVC5.Models。
- Views --web.config是配置视图文件(我才知道原来MVC中各种配置文件是分开的。)
- masterPage–模板页 Layout 默认是_layout 可以自行指定。
- dynamic是个动态类型–运行时检测–编译时检测,所以写的时候随你写,利用委托实现,性能高于反射。
- 弱类型语言的特点,方便做一些特殊处理。