zoukankan      html  css  js  c++  java
  • core基础常用的部分HttpContext'常用操作

    *1:NetCore的上下文,自行封装一个全局静态 HttpContextHelper

    *2:读取Json的配置文件

    {
    // IConfiguration Configuration 得注入,二级节点的访问,用冒号 .GetSection("AppSettings:" + name)
       Configuration.GetSection("").Value; 
    }

    *3:读取Session

    // 先下载session的扩展nuget包 Microsoft.aspnetcore.http.extensions
    services.AddSession(); //写在 ConfigureServices中; 
    app.UseSession(); //写在 Configure中
    HttpContextHelper.Current.Session.GetString("pwdqrcodekey");

    *4:控制器的一般fitter,继承自 : Attribute, IActionFilter
    /****************/

    public class LoginFltAttribute : Attribute, IActionFilter
    {
    /// <summary>
    /// 执行后
    /// </summary>
    /// <param name="context"></param>
    public void OnActionExecuted(ActionExecutedContext context)
    {}
    
    /// <summary>
    /// 执行前
    /// </summary>
    /// <param name="context"></param>
    public void OnActionExecuting(ActionExecutingContext context)
    {}
    }

    —1.获取当前控制器名称的异同

    // string actionName = filterContext.ActionDescriptor.ActionName; //MVC5写法
       string actionName = filterContext.Controller.GetType().Name; //Core写法

    -2.返回数据字典到视图的异同

    filterContext.Result = new ViewResult { ViewName = "error", ViewData = new ViewDataDictionary<Return_Msg>(msg) }; //MVC5写法
    
    /*ViewDataDictionary实例化不了,多用快速监视,使用viewData,来构造他,就可以使用他了*/
    ViewDataDictionary<Return_Msg> viewdata = new ViewDataDictionary<Return_Msg>(((Controller)filterContext.Controller).ViewData, msg);
    filterContext.Result = new ViewResult() { ViewName = "error", ViewData = viewdata }; //Core的写法

    -3.拿到控制器的属性

    filterContext.Controller.ViewBag.RightBtnView //MVC5写法
    Controller controller = filterContext.Controller as Controller;
    controller.ViewBag.RightBtnView = btnView; //Core写法


    -4.控制器中参数的获取 (变量 pDesc 类型是 ParameterDescriptor)

    int zbid = Convert.ToInt32(filterContext.ActionParameters[pDesc.ParameterName]); //MV5的写法
    int zbid= filterContext.ActionArguments[pDesc.Name].ToString(); //Core写法
    filterContext.ActionDescriptor.Parameters。 Ilist<ParameterDescriptor>//集合形式的存放
    filterContext.ActionDescriptor.Parameters[0].Name //获得第一个参数的名称,只能拿到参数名称,不能拿到key对应的value值
    filterContext.ActionArguments//字典形式的参数列表,可以拿到key与value值,更加灵活


    -5.取得当前参数列表List

    List<string> arrQueryKeys = filterContext.HttpContext.Request.QueryString.AllKeys.ToList(); //MV5写法
    List<string> arrQueryKeys = filterContext.HttpContext.Request.Form.Keys.ToList(); //前端Form表单参数的集合
    KeyValuePair<string, Microsoft.Extensions.Primitives.StringValues>[] kk= filterContext.HttpContext.Request.Query.ToArray(); //地址栏的参数列表,这里转换成 数组,Core写法


    -5.1 当前列表中,拿到指定的参数,用指定的key得到对应的value,keyName=指定的key

    int zbid= Convert.ToInt32(filterContext.HttpContext.Request.Params[keyName]); //MV5的写法
    int zbid = Convert.ToInt32(filterContext.HttpContext.Request.Form.FirstOrDefault(i => i.Key == keyName).Value);


    -6.拿到上次访问完整的地址域名,

    filterContext.HttpContext.Request.UrlReferrer.OriginalString; //MVC5判断请求的头中有没有“Referer”是否为空
    filterContext.HttpContext.Request.Headers["Referer"]; //Core


    7.判断是否为Ajax请求

    filterContext.HttpContext.Request.IsAjaxRequest()//MC5
    判断是否是Ajax请求 判断Head头部是否有 “X-Requested-With: XMLHttpRequest”,有=Ajax请求
    public static bool IsAjaxRequest(this HttpRequest request)
    {
       bool result = false;
       var xreq = request.Headers.ContainsKey("x-requested-with");
       if (xreq)
       result = request.Headers["x-requested-with"] == "XMLHttpRequest";
       return result;
    }


    8.先注册。已经注册过的,可以通过这种得到

    protected virtual T CreateService<T>()
    {
       // typeof(T) ==>接口名
       return (T)this.HttpContext.RequestServices.GetService(typeof(T));
    }
  • 相关阅读:
    【Java基础】浅谈常见设计模式
    面试中的排序算法总结
    Spring Boot中静态资源(JS, 图片)等应该放在什么位置
    分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
    分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
    分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令
    Springmvc参数绑定
    SpringMVC框架的图片上传
    全文检索技术ElasticSearch
    MQ(Message Queue)消息队列
  • 原文地址:https://www.cnblogs.com/Qintai/p/11828247.html
Copyright © 2011-2022 走看看