1: MVC基础知识

1约定
 控制器约定: 1、控制器的后缀名一定是Controller结尾,同时要继承Controller父类
 2、方法控制器下的方法会去查询其Views文件夹下的和控制器同名目录下的和action同名的视图
 3、控制器中的action方法一定是public,否则会抛出404异常
 
 Razor视图:
  扩展名:.cshtml
  @:Razor 语法 ,在@{}中所写的代码都是c#代码,并且在C#代码中可以嵌套html标签
 
路由规则
 用于根据路由规则占位符:{controller}/{action}/{id}
 注意:{controller}/{action}的名称是不能够修改的,位置可以调换,但是不建议调换
 {id} 代表方法的形参名称,如果方法的型参名称与此占位符不一致,则无法将值传入
 
在一个action方法中返回值的写法:
 1、return View() :负责返回一个视图
 
 一、action向视图传值的方式
 1、ViewData
 2、ViewBag
 3、TempData
 4、View() :通过Model传递给视图页面的 ,所以在.cshtml中是用Model来接收的
  注意点; ViewBag 本质上使用的是ViewData来传递的,所以ViewBag和ViewData存在相同key,那么后面那个的值会覆盖前面那个的值
 
  view():本质上返回的是ViewResult,而ViewResult的父类是ViewResultBase,ViewResultBase 继承actionresult抽象类,所以能够在一个
  action中通过return view() 满足方法的返回值是ActionReulet的要求
  action向视图传值的本质:是通过视图引擎将ViewResult对象实例传递给WebViewPage<Tmodel> 中的 Model 和 ViewData
 
 二、传值的几种方式
 MVC中不推荐,但是可以使用
 http://localhost:47368/C01ActionToView/index?id=1&name=abc
 MVC推荐的方式:
 http://localhost:47368/C01ActionToView/index/100
 get:
 post:
 
 三、actionresult的各个子类用法
 3.1、ViewResult() -->action方法中要想返回视图,则要使用ViewResult (MVC开发中用的最多)
    3.2、ContentResult() -->返回内容之用(特点,可以不需要有对应的视图) Home/ContentResultDemo中有示例
    3.3、JsonResult() -->可以用作ajax请求 ,注意:如果是get请求,则一定是要在Json()中写入:JsonRequestBehavior.AllowGet
    3.4、FileResult() -->可以用作画验证码,也可以利用它来实现文件的下载
    3.5、HttpStatusCodeResult() --》用户自己设置需要响应的状态码
    3.6、JavaScriptResult 注意:JavaScript配合视图中的<script rc="/GroupInfo/JavaScriptResultDemo1">
    3.7、RedirectResult():执行页面跳转本质上是在响应报文头中产生了 Location:要跳转的页面的虚拟路径 命令
    3.8、RedirectToRouteResult :当系统中路由规则比较多的时候,可以由程序员指定使用哪个路由规则来生成url
四、强类型和弱类型视图
   从视图在表现形式来将:
   强类型视图是在视图上利用了@model 指定了具体在类型,而弱类型视图是没有被@model 指定的
   
   从编译以后在视图类文件来看:
   强类型视图,在其父类WebViewPage<T> 中的T已经指定了具体在类型,而弱类型视图在其父类WebViewPage<T> 中的T是一个object
   
五、ViewStart.cshtml 视图页面
 MVC中执行任何一个视图之前都要先执行views文件夹下的_viewstart.cshtml的视图内容
 注意点:想要上面描述成立,则在action方法中必须是以return view() 来返回视图,
 如果是以PowerView() 方法来返回视图的话,则不会执行_viewstart.cshtml中的内容
 
 ViewStart.cshtml可以在Views文件夹下的子文件夹下存在,此时只有在访问此文件夹下的视图文件的时候才会被先执行
 
 作用:一般是存放MVC网站中所有视图公用的js,css等文件
 
 
六、LayOut.cshtml中的
 Styles.Render("虚拟路径"):输出此虚拟路径下包含的物理css文件
 Scripts.Render("虚拟路径"):输出此虚拟路径下包含的物理js文件
 
 每个虚拟路径下面的物理文件是在MVC网站启动的时候就调用了Applciation_Start()
 ->BundleConfig.RegisterBundles() 就将每个虚拟路径映射好了具体的物理文件
 
 作用:1、一个虚拟路径可以有多个物理文件,将来在视图上是需要调用Styles.Render()h或者Scripts.Render()可以一次性引用
 多个文件,将来如果要修改任何一个文件名称,则只要修改BundleConfig.RegisterBundles()中的注册代码即刻
 
 2、压缩js和css文件再输出 :编码 encode 这样做可以优化

posted on 2015-05-10 16:50  阿兴的平凡世界  阅读(100)  评论(0编辑  收藏  举报

导航