• 初始MVC(03)


    目录:

    • 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请求保存到磁盘
    Request对象
    • Respones(响应,提交)

      ①write() 输出

        Response.Write("");  

      ②Redirect() 重定向

       用来跳转页面 Response.Redirect(""); 

    成员                                                             说明
    String ContentType                                       获取或设置输出流的HTTP MIME类型
    HttpCookieCollection Cookies                         获取相应Cookie的集合
    NameValueCollection Headers                        获取相应标头的集合
    Redirect(url)                                                将请求重定向到新的URL
    Write(data)                                                  将一个字符串写入HTTP相应输出流
    Respones对象
    • 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
    Session对象

      ②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(天数)});//保存
    Cookie对象
    • Server
    string MapPath(path)      返回与Web服务器上的指定虚拟路径相对应的物理文件路径
    Transfer                        使用指定的path路径进行转发
    string UrlDecode        对字符串进行URL编码
    string UrlEncode        对字符串进行URL解码
    Server对象
    • HttpContext   
    HttpApplicationStateApplication          Application对象
    HttpRequest Request                          Request对象
    HttpResponse                                  Response对象
    HttpServerUtility
    Server                                         Server对象
    HttpSessionState                        Session对象
    Iprincipal User                                User对象
    Cache                                        Cache对象
    static HttpContext Current                为当前Http请求获取或设置HttpContext对象            
    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");
    }
    }
    }
    案例
  • 相关阅读:
    Execution Contexts (执行上下文)
    OOP—ECMAScript实现详解
    requireJS入门
    SqlServer 傲娇的表变量
    CSharp进阶 引用类型引发的血案
    CSharp进阶 都是请求惹的祸
    z-index问题
    js中事件(自定义事件)
    做了个后末日朋克风的梦
    昨晚的梦
  • 原文地址:https://www.cnblogs.com/shishixiang/p/14037952.html
Copyright © 2020-2023  润新知