第1章 进入ASP.NET MVC世界
ASP.NET 概述
目前开发B/S系统的主要技术有ASP.NET 、JSP、PHP等。其中ASP.NET是
基于.NET平台创建动态网页的一种服务器技术,使用它可以创建动态交互
Web页面。
图1.1 .NET Framework与ASP.NET
ASP.NET MVC简介
ASP.NET MVC是ASP.NET技术的一个子集,他是ASP.NET技术和MVC模的完美结
合,类似与Java的struts框架。
第一个ASP.NET MVC程序
创建ASP.NET MVC应用
首先,打开VS2012,执行“文件”->“新建”->“项目”命令,左边项
目类型选择“web”选项,在中间的.NET框架版本下拉列表选择“.NET Frame
work4.5”选项,选择“ASP.NET MVC4 Web应用程序”。
项目结构说明如下:
>App_Data文件夹:用来存放系统包含的数据库文件。
>App_Start文件夹:包含ASP.NET MVC系统启动的相关类文件。
>Controllers文件夹:放置整个项目的控制器代码文件。
>Models文件夹:放置整个项目的模版代码文件。
>Views文件夹:放置整个项目的视图代码文件。
>View下的Web.config文件:作用于视图的配置文件。
>Global.asax文件:全局应用程序文件,一般和App_Start文件夹中的类配合使用。
>packages.config文件:用于管理项目用到的程序集版本。
>根目录下的Web.config文件:作用于整个项目的配置文件。
Hello,ASP.NET MVC
1.控制器说明
>System.Web命名空间:ASP.NET核心命名空间。
>System.Web.Mvc命名空间:开发ASP.NET MVC的最基本的命名空间。
>Controller类:每个控制器必须继承的基类。
>Index()方法:控制器的动作方法,用于响应客户端请求,并调用相应的视图输出信息。
2.基本规则
控制器都已Controller结尾,比如HomeController,当我们创建一个动作
方法Index(),那么如果让这个方法返回视图,它会默认找View文件夹下和控制
器名的文件夹Home,在找文件加下和动作方法重名的Index视图。
ASP.NET MVC程序的工作原理
1 Global.asax
在ASP.NET程序中,Global.asax主要是在系统启动时做一些全局性的工
作。从上述代码可以看出,它调用App_Start文件夹中的相关类来完成这些工
作,如调用RouteConfig.Register Routes()来完成路由注册;调用
FilterConfig.RegisterGlobalFilters()来完成全局过滤器(类似与Struts中
的拦截器)的注册。
2RouteConfig.cs文件
这里RegisterRoutes()方法的作用就是定义路由,即定义URL访问规则。
3视图命名和寻址规则
4Web服务器
Web.config中有一项和调试相关的配置,如下所示。
<compilation debug="true" targetFramework="4.5" />
其中,debug=”true”即表示支持调试,在正式发布后,debug还需要设置为
false
ASPX视图
ASPX视图的声明和编码
[email protected]指令
表1-3 @Page指令常用属性 |
|
属性 |
说明 |
Language |
指定页面代码和后置代码使用的语言,需要注意的是这里只支持微软.net框架中的语言 |
Inherits |
继承的页面类,ASPX视图一般继承System.Web.ViewPage和 System.Web.View<T>两种类型 |
ContentType |
指定MIME类型和页面回应是所采用的字符编码方式 |
ValidateRequest |
指定是否验证请求 |
MasterPageFile |
指定使用的模板视图文件 |
[email protected]指令
在ASPX视图中,可以通过@Import指令引入新的命名空间.
<%@Import Namespace=”MvcDemo.Helper”%>
3服务器端内嵌语法
<%%>小脚本
<%=%>或<%:%>表达式
<script runat=”server”></script>服务器端脚本块
母版视图
1创建母版视图
<%@MasterLanguage="C#"Inherits="System.Web.Mvc.ViewMasterPage"%>
<!DOCTYPEhtml>
<html>
<headrunat="server">
<metaname="viewport"content="width=device-width"/>
<title><asp:ContentPlaceHolderID="TitleContent"runat="server"/></title>
</head>
<body>
<div>
<asp:ContentPlaceHolderID="MainContent"runat="server">
</asp:ContentPlaceHolder>
</div>
</body>
</html>
2使用母版视图
<%@PageTitle=""Language="C#"MasterPageFile="~/Views/PartialView/ViewMasterPage1.Master"Inherits="System.Web.Mvc.ViewPage<dynamic>"%>
<asp:ContentID="Content1"ContentPlaceHolderID="TitleContent"runat="server">
View1
</asp:Content>
<asp:ContentID="Content2"ContentPlaceHolderID="MainContent"runat="server">
<h2>View1</h2>
</asp:Content>
3资源文件加载工具方法
Url.Content(“~/css/style.css”)//~代表服务器根目录
ASP.NET系统对象
ASP.NET系统对象简介
ASP.NET中常见的系统对象如下表所示
表1-4 ASP.NET系统对象 |
|
对象名称 |
说明 |
Request |
用来获取客户端在Web请求期间发送的值,如URL参数、表单值等。 |
Response |
用来负责返回到客户端的HTTP输出 |
Application |
作用于整个程序运行期的状态对象,可用来保存整个应用程序的配置参数 |
Session |
会话状态保持对象 |
Cookie |
客户端保持会话信息的方式 |
Server |
用于进行一些服务器端处理的工具对象,如URL编码解码、页面转发 |
HttpContext |
封装有关个别HTTP请求的所有HTTP特定的信息 |
1.Request对象
成员 |
说明 |
string ContentType |
获取或设置传入请求的MIME内容类型 |
HttpCookieCollection Cookies |
获取客户端发送的Cookie的集合 |
HttpFileCollection Files |
获取由客户端上载的文件的集合 |
NameValueCollection Form |
获取表单提交的数据 |
NameValueCollection Headers |
获取HTTP头集合 |
NameValueCollection QueryString |
获取HTTP查询字符串变量集合 |
string RawUrl |
获取当前请求的原始URL |
NameValueCollection ServerVariables |
获取Web服务器变量的集合 |
string UserAgent |
获取客户端浏览器的原始用户代理信息 |
string UserHostAddress |
获取远程客户端的IP主机地址 |
string MapPath(string virtualPath) |
指定的虚拟路径映射到物理路径 |
void SaveAs(string filename,bool includeHeaders) |
将HTTP请求保存到磁盘 |
2.Response
成员 |
说明 |
string ContentType |
获取或设置输出流的HTTP MIME类型 |
HttpCookieCollection Cookies |
获取响应Cookie集合 |
NameValueCollection Headers |
获取响应表头的集合 |
void Redirect(string url) |
将请求重定向到新的URL |
void Write(string s) |
将一个字符串写入HTTP响应输出流 |
3.Server对象
常用成员 |
说明 |
string MapPath(string path) |
返回与Web服务器上的指定虚拟路径相对应的物理文件路径 |
void Transfer(string path) |
使用指定的path进行页面转发 |
string UrlDecode(string s) |
对字符串进行URL编码 |
string UrlEncode(string s) |
对字符串进行URL编码 |
4.Session对象
常用成员 |
说明 |
string SessionID |
包含唯一的用户会话标识符,它可用于在整个会话过程中记录用户信息。 |
int Timeout |
用户超时时间,单位为分钟,Session中数据的生存期以超时时间为限。 |
void Abandon() |
结束Session,取消当前会话 |
void Add(string name,object value) |
添加Session数据 |
void Remove(string name) |
删除Session数据 |
5.Cookie对象
常用成员 |
说明 |
string Name |
Cookie对象的名称 |
string Value |
Cookie对象的内容(值) |
DateTime Expires |
Cookie对象的有效时间。如果没有设置Cookie的失效日期,它们仅保存到关闭浏览器程序为止;如果将Cookie对象的Expires属性设置为 DateTime.MaxValue,则表示Cookie永远不会过期。 |
语法:
Response.Cookies[Cookie的名称].value=变量值;//写入Cookie
String 变量名=Request.Cookies[Cookie的名称].Value;//读取Cookie
或
HttpCookie hcCookie = new HttpCookie(“Cookie的名称”,”值”);
Response.Cookies.Add(hcCookie);
6.Applicaion对象
语法:
Appliation[“Application名称”]=值;//存值
变量=Application[“Application名称”];//取值
7.HttpContext对象
常用成员 |
说明 |
HttpApplicationState Application |
Application对象 |
HttpRequest Request |
Request对象 |
HttpResponse Response |
Response对象 |
HttpServerUtility Server |
Server对象 |
HttpSessionState Session |
Session对象 |
IPrincipal User |
User对象 |
System.Web.Caching.Cache Cache |
Cache对象 |
static HttpContext Current |
为当前HTTP请求获取或设置 System.Web.HttpContext对象 |
☆在某些特殊情况下,可能需要在其他自定义类中访问这些对象,这是只需要通过HttpContext的Current属性就能达到目标,用法如下面代码所示:
System.Web.HttpContext.Current.Response.Redirect(“~/”);
原文地址:https://www.cnblogs.com/xzcode/p/8866213.html