APS.NET MVC + EF (03)---初始MVC

3.1 MVC简介

MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。Asp.net MVC是微软提供的MVC开发框架。

MVC将UI层分为了三个部分:

  • 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则。
  • 视图:定义应用程序界面的显示方式。
  • 控制类:一组类,用于处理来自用户、整个应用程序流以及特定应用程序逻辑的通信。

3.2 第一个Asp.net MVC 应用程序

3.2.1 创建ASP.NET MVC 应用

用VS创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录,如图所示3-1所示。

图3-1 asp.net mvc 项目目录结构

表3-1是对目录的说明

表3-1 asp.net mvc程序结构说明


目录


用途


/Controller


用于保存那些处理URL请求的Controller的派生类


/Models


用于保存那些表示和操纵数据以及业务对象的类


/Views


存那些负责呈现输出结果(如HTML)的UI模板文件


/Scripts


保存Js库文件和脚本


/fonts


用于保存Bootstrap模板系统中的字体文件


Content


用于保存CSS、图像和其他站点的内容,而非脚本


/App_Data


保存想要读取/写入的数据文件比如.mdf的本地数据库文件


/App_Start


保存一些同能的配置代码,路由等

3.2.2 ASP.NET MVC 工作原理

MVC模式的工作过程如图3-2所示。

图3-2 MVC工作过程

客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。

我们运行的ASP.NET MVC程序访问的http://localhost:2176/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action,如图3-3所示。

图3-3 URL对应关系

其中 public ActionResult Index() 这个方法称为Controller的Action,他返回的是ActionResult的类型。一个Controller可以有很多个Action。

那么一个URL是怎样被定位到Controller中来的呢?它是通过"路由"完成的,默认代码如下:


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 }

);

}

}

RegisterRoutes()方法的作用就是定义路由,即定义URL访问规则。我们可以看到这里定义了一个名为"Default"的Route,还定义了默认的参数。默认参数的意义在于,当我们访问例如http://localhost:2176/的URL的时候,他会将不存在的参数用默认的参数补上,也就是相当于访问http://localhost:2176/Home/Index一样。

在控制器中,使用View()方法调用视图,返回和动作方法同名的视图,但是却没有显示提供视图的位置。其实这里依赖的是视图的寻址规则,即会按照规则从规定的路径去寻找这个命名的视图。在ASP.NET MVC中,有一条寻址规则,就是从Views文件夹下和控制器名同名的文件夹中寻找。

ASP.NET MVC程序对于一次请求的处理过程如图3-4所示。最开始应用程序启动,注册路由;当请求到来时,寻找路由表找到负责处理的控制器和动作方法,交给该动作方法处理;动作方法处理完毕,根据寻址规则找到视图,由视图负责页面呈现。

图3-4 ASP.NET MVC 工作过程

ASP.NET MVC框架的一大特点就是"约定胜于配置",即一些规则是约定好的,不需要通过配置文件去配置。我们约定:

  • 所有的控制器都以Controller结尾。
  • 应用程序中所有视图都有一个统一的Views主目录。
  • 在Views主目录下放置和控制器同名的子目录。

3.3 ASP.NET 系统对象


对象名称


说明


Request


用来获取客户端在web请求期间发送的值,如URL参数、表单值等


Response


用来负责返回到客户端的HTTP输出


Application


作用于整个应用程序运行期间的状态对象,可用来保存整个应用程序的配置参数


Session


会话状态保持对象


Cookie


客户端保持会话信息的方式


Server


用于进行一些服务器端处理的工具对象,如URL,编码解码


HttpContext


封装有关个别HTTP请求的所有HTTP特定信息

3.3.1 Request对象

Request对象的常用成员如下:


成员


说明


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请求保存到磁盘

3.3.2 Response对象常用成员


成员


说明


String ContentType


获取或设置输出流的HTTP MIME类型


HttpCookieCollection Cookies


获取相应Cookie的集合


NameValueCollection Headers


获取相应标头的集合


Redirect(url)


将请求重定向到新的URL


Write(data)


将一个字符串写入HTTP相应输出流

3.3.3 Server对象常用成员


常用成员


说明


string MapPath(path)


返回与Web服务器上的指定虚拟路径相对应的物理文件路径


Transfer


使用指定的path路径进行转发


string UrlDecode


对字符串进行URL编码


string UrlEncode


对字符串进行URL解码

3.3.4 Session对象

在Asp.net 中,Session以key-value的方式在服务器端保存数据,它的使用方式非常简单,如下。

Session["Session名称"] = 值; //存值

变量 = Session["Session名称"]; //取值

Session对象常用成员:


常用成员


说明


string SessionId


包含唯一用户会话标识符,它可用与整个会话过程记录用户的信息


int Timeout


用户超时的时间,单位分钟。在该段时间内,用户即使没有任何操作用户的状态也不会清除。如果一段时间内没有操作,服务器无法知道用户是否在线,所以Session中的数据生存期以超时时间为限


Abandon()


结束Session,取消当前会话


Add(name,value)


添加Session数据


Remove(name)


删除数据

3.3.5 Cookie对象

语法:

Response.Cookies[Cookie的名称].Value = 变量值; //写入Cookie

string 变量 = Request.Cookies[Cookie的名称].Value; //读取Cookie


常用成员


说明


string Name


Cookie对象名称


string Value


Cookie对象的内容


DataTime Expires


Cookie对象的有效时间。如果没有设置Cookie的失效日期,它们仅保存到关闭浏览器程序为止;如果Cookie对象的Expires属性设置为DateTime.MaxValue,则表示Cookie永远不会过期

3.3.6 HttpContext对象


常用成员


说明


HttpApplicationState

Application


Application对象


HttpRequest Request


Request对象


HttpResponse


Response对象


HttpServerUtility

Server


Server对象


HttpSessionState


Session对象


Iprincipal User


User对象


Cache


Cache对象


static HttpContext

Current


为当前Http请求获取或设置HttpContext对象

3.4 案例:实现用户登录

需求:

  1. 记住密码功能
  2. 登录用户信息传递

原文地址:https://www.cnblogs.com/mrfang/p/10743802.html

时间: 2024-09-28 03:33:41

APS.NET MVC + EF (03)---初始MVC的相关文章

ASP.NET MVC+EF框架+EasyUI实现权限管理系列

http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个 项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个 系列

使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗

安装MiniProfiler 在MVC + EF + Bootstrap 2 权限管理系统入门级(附源码)文章中下载了它的源码,调试模式下打开一个页面都要再2.5秒以上,所以使用MiniProfiler.MiniProfiler.MVC4 .MiniProfiler.EF6组件进行了分析. 首先,依次序安装组件.然后,修改Global.aspx.cs 文件: protected void Application_Start() { AreaRegistration.RegisterAllArea

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(1)-框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) 前言:这篇博客开始我们便一步一步的来实现这个权限系统的初步设计-框架搭建,首先我要说的是我们需要开发工具Visual Studio 2012或者10也行,其次是我们要有SQL Server数据库,如果是Visual Studio 2010的话,你还要安装MVC4的开发文件,这个是吗?我不记得了,谁可以回答我一下的,我一直用2012,都是集成

ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个系列,可能要很长时间吧,但是我肯定会一直坚持,如果我哪里写的不好欢迎大家指出我们共同学习,而且我理解的也不是很透彻,所以我想在写这样一遍

MVC+EF 理解和实现仓储模式和工作单元模式

MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generic Repository in ASP.NET MVC using Entity Framework 文章介绍 在这篇文章中,我们试着来理解Repository(下文简称仓储)和Unit of Work(下文简称工作单元)模式.同时我们使用ASP.NET MVC和Entity Framework 搭

MVC+EF登陆 并跳转成功页面

最近在做.net 的一个项目,我们的开发是基于MVC+EF+B层和D层以及封装好的底层方法的这样子一个框架.这是一个档案管理系统,毋庸置疑,在做系统时,要先登录.那么,MVC如何实现登陆呢? 思路: 和普通登陆一样,输入用户名和密码,为空判断,然后调用方法,和数据库信息进行对不,若相同,则登陆成功,把ID信息存到session或cookie中,其他页面直接验证session或cookie来判断用户是否登陆. 实现: 常言道,说的容易,做着难.先分析这个需求,按照我的思路,要先建一个control

ASP.NET MVC+EF框架+EasyUI实现权限管理

4.为什么使用MVC而不是用WebForm呢? (1)为什么使用MVC而不是用WebForm呢?这个是我临时想的,因为我就是想说明一下WebForm和MVC的优缺点,来可以使大家能够更好地理解 MVC和WebForm,而不像某些人说MVC会替代WebForm,我个人认为这个可能性很小,因为各有各的好处,看在哪里使用吧,下面我就简单介绍下 WebForm和MVC的优缺点. (2)WebForm介绍 1)优点 1):支持事件模型,取决于微软提供了丰富的服务器端组建,WebForm可以快速的搭建Web

自己开发博客(ASP.NET MVC+EF CodeFrist)-历程小功能

自己开发博客(ASP.NET MVC+EF CodeFrist)-时间轴小功能 想写个类似时间轴的效果 就找了一个插件 前端不济 找了一个简单的插件地址http://sc.chinaz.com/jiaoben/130509308250.htm 这是实体类 public class TimnAxis : BaseEntity<int> { [Required(ErrorMessage = "{0}是必须的")] [Display(Name = "时间")]

分布式缓存--MVC+EF+Memcache

一.从单机到分布式 现在三台机器组成一个Web的应用集群,其中一台机器用户登录,然后其他另外两台机器如何共享登录状态? 解决方案: 1.AspNet进程外的Session . 2.用数据库存数等钱登录状态. 3.Memcache. 二.为什么用Memcache? 1.解决高并发访问数据库带来的死锁 2.多用户端共享缓存 三.Memcache原理 其实memcache是一种windows服务,客户端发来的请求,都会被Socket服务器端接受到.存数使用键值对存储的.客户端进行存储的时候,就是找最接