Net学习日记_ASP.Net_MVC_Razor_笔记

Asp.net MVC框架

1.区别 Asp.NetMVC框架  和  MVC设计模式

1.1.Asp.Net Mvc框架 是微软开发的一套新的 Web 机制

原本的意思是想把之前的先后台紧密联系的WebForm机制改变成灵活的配置方式,可是微软以为每一个控制器访问的 Model 和视图 若是都是用配置文件的方式的话,很麻烦。html

因此微软采起了一种“约定大于配置”的理念:程序员

                                    用户访问某个 控制器 里  Action方法,就会去自动加载 同名的 视图。设计模式

 

缺点:不能在运行时经过配置灵活的 修改 模型和视图的组合关系;浏览器

优势:mvc

         大量的减小了程序员的配置工做;框架

         自己网站的业务和页面就是配套的,不多有共用或改变的状况;网站

 

能够 容许 程序员使用 不一样的 视图引擎,从而根据不一样的业务和习惯选择不一样的视图引擎提升开发效率。url

 

1.2.MVC设计模式

是一种用于将 具体显示 与 业务 分离,并可以经过某种方式灵活改变的代码设计方式。spa

优势在于,用户请求的 页面 和 业务 能够灵活配置,下降了 页面呈现 和 后台业务的耦合度。.net

简而言之:用户请求控制器,控制器【根据配置】决定调用哪一个模型来执行业务,并将返回的数据装入 哪一个 视图,最后生成html代码返回给用户。

 

1.3视图加载规则,经过mvc找不到视图的错误,了解加载规则:

  a.先去与控制器同名的 视图文件夹

 

2. Controller 获取浏览器数据

2.1 Controller 接收浏览器数据

a.获取Get数据 :

  a1:获取路由url中配置好的制定参数:

         如 配置好的路由:

浏览器请求路径为: /User/Modify/1 .

MVC框架 获取请求后,就会找到匹配的路由映射路径url,得知 是请求的 控制器类 User里的 Modify 方法,此时就会检查此方法是否包含一个 名为 id 的参数,若是有,按照配置的url 获取“参数”{id},并传给此方法。

  a2.直接经过请求上下文对象里的 Request获取 url ?后的的参数:

       浏览器请求路径为:/User/UserList/1?fun=jp

       控制器获取:Request.QueryString["fun"];

 

b.获取Post数据

  b1.经过 Request.Form["name"] 逐个获取 表单提交的数据

  b2.经过 FormCollection form逐个获取 表单提交的数据

 

  b3.经过 实体对象 一次性获取 表单元素的数据,并设置到 实体对象对应的属性中

  表单中的表单元素的 属性名称 必须和 实体对象 的属性同样!

查看源码时,方法都没有Region,因此都处于打开状态,能够使用快捷键

 

         折叠类中全部方法:ctrl+m+o

         折叠类中全部的代码块,包括类:ctrl+m+l

 

3.控制器将处理后的数据“传”给视图的方式

ViewData/ViewBag/TempData/Model

其中:ViewData和ViewBag本质上都是【ViewDataDictionary】类型,而且二者之间的数据共享,只不过提供了不一样的语法操做方式而已。

3.1 ViewData传递数据:

 在视图代码中使用 ViewData

3.2 ViewBag传递数据:注意语法和ViewData不一样

  在视图代码中使用ViewBag

 注意:与ViewData同样,都须要在使用以前转型!

 

3.3 TempData 临时数据

在视图代码中使用TempData:

查看源码:

发现,只要从TempData中取出一个元素,就会当即将此元素移除!

 

3.4 Model 强类型参数

在控制器里的Action方法最后 调用View加载视图的时候,将 数据对象传入。

 

视图中,能够经过 Model属性获取!而且不须要转型就能够直接使用!

注意:Model虽然能够不转型就直接使用,可是 由于编译器没法在编译时获取它的类型,因此就没法出现智能提示!

为了解决这个问题,咱们能够在试图的最上面经过代码指定model类型

使用时能够“点”出来

 

  查看源码:

当咱们在试图上添加了 @model指令时

当前视图就会继承于 WebViewPage<T> 强类型视图页面类,而且指定T为Student:

若是没有添加@model指令:

当前视图就会继承于 WebViewPage<T> 强类型视图页面类,但T变成了 dynamic

 

4.MVC视图的“秘密”

4.1 其实咱们的cshtml视图页面,在被访问的时候,也编译成了页面类,

      继承于:WebViewPage<T>

4.2 cshtml页面里的全部的代码,都编译到 这个类的Excute方法里了

 

5.Razor语法

5.1 Razor自动转义< > 尖括号

     在Action方法中编写以下代码:

 在cshtml中输出的结果以下:

5.2使用HtmlString来封装字符串,就不会被Razor转义

结果:

5.3使用System.Web.IHtmlString: @Html.Raw("<p>a</p>")

5.4在js代码中防止转义

 

5.5代码块

@{  //1.执行多行C#代码
string s ="Hi~";
      int age =11;
}

 

@{  //2.调用无返回值方法
Html.RenderPartial("SomePartial"); }

 

 

5.6调用泛型方法,须要特殊语法:加上一对小括号:

@(Html.SayHi<string>())

 

 

5.7在C#代码块中直接输出 字符串文本

@for (int i = 0; i < 5; i++)
{
    //<text>哈哈哈</text>
    @:哈哈哈
}
相关文章
相关标签/搜索