目录:
- MVC简介
- 第一个程序
- MVC原理
- ASP.Net系统对象
- 案例
1.MVC简介
分别表示:
- M model 模型:存放数据
- V view 视图:交互显示
- C controller 控制器:逻辑处理
1.1 ASP.NET MVC
创建ASP.NET MVC应用程序
目录 | 用途 |
/Controller | 用于保存那些处理URL请求的Controller的派生类 |
/Models | 用于保存那些表示和操纵数据以及业务对象的类 |
/Views | 存那些负责呈现输出结果(如HTML)的UI模板文件 |
/Scripts | 保存Js库文件和脚本 |
/fonts | 用于保存Bootstrap模板系统中的字体文件 |
Content | 用于保存CSS、图像和其他站点的内容,而非脚本 |
/App_Data | 保存想要读取/写入的数据文件比如.mdf的本地数据库文件 |
/App_Start | 保存一些同能的配置代码,路由等 |
1.2ASP.NET MVC 工作原理
- 客户端请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑。
- 从Model中取数据,然后再由Controller选择合适的View返回给客户端。
ASP.NET MVC程序访问的http://localhost:2176/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action
其中 public ActionResult Index() 这个方法称为Controller的Action,他返回的是ActionResult的类型。一个Controller可以有很多个Action。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}", //访问规则
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
}
}
- 约定胜于配置:
- 所有的控制器都以Controller结尾
- 应用程序中所有视图都有一个统一的Views主目录。
- 在Views主目录下放置和控制器同名的子目录
1.3 ASP.Net系统对象
对象名称 | 说明 |
Request | 表示客户端向服务器发送请求。 |
Response | “响应”通俗的说是服务器接收到客户端请求后,给客户的回应 |
Application | 整个应用程序运行期间的状态对象,可用来保存整个应用程序的配置参数 |
Session | 会话状态保持对象 |
Cookie | 客户端保持会话信息的方式 |
Server | 用于进行一些服务器端处理的工具对象,如URL,编码解码 |
HttpContext | 封装有关个别HTTP请求的所有HTTP特定信息 |
- Request(请求,获取)
①获取post方式提交的表单数据
String v1=Request.Form["表单元素的name"];
②get请求,获取地址栏数据
String v1=Request.QueryString["id"];
成员 说明
String ContextType 获取设置传入请求的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(path) 将指定的虚拟路径映射到物理路径
Save() 将HTTP请求保存到磁盘
- Respones(响应,提交)
①write() 输出
Response.Write("");
②Redirect() 重定向
用来跳转页面 Response.Redirect("");
成员 说明
String ContentType 获取或设置输出流的HTTP MIME类型
HttpCookieCollection Cookies 获取相应Cookie的集合
NameValueCollection Headers 获取相应标头的集合
Redirect(url) 将请求重定向到新的URL
Write(data) 将一个字符串写入HTTP相应输出流
- Application
①地址栏获取 传参
地址? 参数 (如 id=2&name=张三)。如何判断是否传入参数 string.IsNullOrEmpty(Request.QueryString[""])。
- (B/S会话状态保持)
①Session
存放在服务器上 影响服务器性能
语法:
- Session[“Session名称”] = 值; //存值
- 变量 = Session[“Session名称”]; //取值
成员 说明 string SessionId 包含唯一用户会话标识符,用于整个会话过程记录用户的信息 int Timeout 用户超时的时间,单位分钟。 Abandon() || null 结束Session,取消当前会话 Add(name,value) 添加Session数据 Remove(name) 删除数据 视图中拿数据 @(((类)Session["name"]).属性)s
②Cookie
只能保存字符串 不能超过4K ,存放在客户端 不安全 ,还有时效性 发过去的时候就过期了 所有要加保存时间;
语法:
- Response.Cookies[Cookie的名称].Value = 变量值; //写入Cookie
- string 变量 = Request.Cookies[Cookie的名称].Value; //读取Cookie
- HttpCookies hCook=new HttpCookies("名称","值")//创建对象(好处:设置有效时间)。Rasponse.Cookies.Add(hCook);//添加
string Name Cookie对象名称 string Value Cookie对象的内容 DataTime Expires Cookie对象的有效时间。 Response.Cookies.Add(new HttpCookie("name")){ value = "值",Expires = DateTime.Now.AddDays(天数)});//保存
- Server
string MapPath(path) 返回与Web服务器上的指定虚拟路径相对应的物理文件路径 Transfer 使用指定的path路径进行转发 string UrlDecode 对字符串进行URL编码 string UrlEncode 对字符串进行URL解码
- HttpContext
HttpApplicationStateApplication Application对象 HttpRequest Request Request对象 HttpResponse Response对象 HttpServerUtility Server Server对象 HttpSessionState Session对象 Iprincipal User User对象 Cache Cache对象 static HttpContext Current 为当前Http请求获取或设置HttpContext对象
1.4案例
//跨域请求Session丢失问题解决方式 //在登录控制器中引用命名空间 using System.Web.SessionState; 控制器实现 IRequiresSessionState 接口 public class AccountController : Controller, IRequiresSessionState { public ActionResult Login(string loginName,string loginPwd) { if (loginName=="admin" && loginPwd=="sa") { Session["User"] = "admin"; //可直接使用 return RedirectToAction("index", "book"); } } }