ASP .NET MVC是.NET Web开发中的重要框架之一
这篇文章主要讲解以下内容:
ü 会搭建ASP.NET MVC项目
ü 理解ASP.NET MVC程序的执行过程
ü 会使用ASP.NET 中的系统对象
ü 会使用内嵌语法编写视图
ü 会使用母版视图
常见的Web服务器端开发技术主要有:JSP、ASP.NET、PHP等
ASP.NET的特色和优势:易于调试、运行效率高等
具体编译过程为:通过对于微软的.NET开发语言编写源代码(譬如使用C#语言编写源代码),再通过其对应的编译器(C#语言编译器)将源代码翻译为微软中间语言代码(即MSIL或IL),再通过即时编译器(Just in time或JIT)翻译为对于平台的机器语言代码。可以通过下面的流程图加以描述:
代码→编译→MSIL或IL编译(通过JIT)→机器语言
开发的网站案例有:dell销售官网、当当书店网站、一网通、我的空间、微软官网等。
MVC的运行过程为:用户通过浏览器的URL向服务器发出请求,通过服务器的MVC的路由机制进行解析,从而决定请求由哪个控制器的动作(Action)来响应请求,如果解析失败,则URL请求失败,否则执行对应的控制器的动作。然后由控制器的Action来与Model进行数据的交换,将返回的数据信息交由视图View来呈现出来,再返回到用户端的浏览器显示出来。
MVC下的Global.asax 文件位于应用程序的根目录下面,用于处理应用程序级事件的文件。
MVC下的App_Start文件夹,放置应用程序启动执行的代码文件 ,由Global.asax文件调用。
支持ASP.NET的Web服务器有开发服务器,即ASP.NET Development Server和IIS Express。还有一个是正式服务器,即站点发布后的服务器,IIS(Internet Information Server)。
ASP.NET MVC中的默认规则:
1、 文件命名和位置规则,控制器以Controller结尾,且处于Controllers目录中;
2、 每一个控制器对应于一个视图次级目录,且位于Views固定的主目录下,次级目录的名字和控制器的名字相同。
3、 可选规则,视图名和动作方法名相同。
ASP.NET有两种视图引擎,即经典的ASPX视图引擎和高效简洁的Razor视图引擎。
经典的ASPX视图引擎类似于经典Web的ASPX页面语法规则。
下面的ASPX视图引擎的脚本如下:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage"
ContentType="text/html; charset=utf-8" %>
<%@ Import Namespace="MvcDemo.Helpers" %>
<html>
<head><title>计算求和</title></head>
<body>
两个数的求和结果为:
<%
int numA = 4, numB = 5 ;
int result = numA+numB;
%>
<%=result %>
</body>
</html>
其中的第一行为@Page指令,用于对当前的视图页面的说明,语言为“C#”,当前页面继承自“System.Web.Mvc.ViewPage”,页面的内容类型和字符集等
下面即为html的标准标签框架,里面可以使用符号“<% …%>”,用于表示小脚本,相当于服务器端代码,下面的“<%=result %>”表达式表示输出result的值
ASPX视图其他语法规则
u 定义方法或全局变量
<script runat="server">
c#代码
</script>
u 注释
<!-- html注释-->
<%-- 代码块--%>
<% //单行注释 %>
<% /*多行注释 */ %>
小结:ASP.NET MVC 程序的技术要素有哪些?
即:路由、控制器、视图、过滤器、配置文件等。
ASP.NET中的系统对象:Request、Response、Sever、Session、Cookie、Application等
其中Session、Cookie、Application为状态保持对象
Request对象的使用:
1、 获取表单数据:
string 变量名 = Request.Form["表单字段名"];
2、 获取URL参数值:
string 变量名 = Request.QueryString["URL参数名"];
3、 获取Cookie数据:
string 变量名 = Request.Cookies[Cookie的名称].Value;
Response对象的使用:
1、 页面重定向:
Response.Redirect("URL");
2、 写入Cookie:
Response.Cookies.Add(Cookie 对象);
3、 写入内容:
Response.Write("字符串");
Session对象的使用:
1、 记录用户会话:
Session["键名"] = 对象;
2、 使用会话数据:
对象类型 对象=Session["键名"] as 对象类型 ;
3、 清空会话:
Session["键名"] = null; //清空单个会话数据
Session.Abandon(); //清空当前所有会话
Cookie对象的使用:
1、 创建Cookie:
方法一:
Response.Cookies[Cookie的名称].Value = 变量值;
方法二:
HttpCookie hcCookie = new HttpCookie(Cookie的名称, 变量值);
hcCookie.Expires = 过期时间;
Response.Cookies.Add(hcCookie);
2、 读取Cookie数据:
string 变量名 = Request.Cookies[Cookie的名称].Value;
配置会话状态:
1、 为当前应用程序配置会话状态:
<system.web>
<sessionState timeout ="20" cookieless = " false"
mode ="InPro">
</sessionState>
……
</system.web>
注:timeout:会话状态存储的期限默认20分钟 ;cookieless是否使用cookie的标识;mode为 Session信息存储位置