ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

core基础常用的部分HttpContext'常用操作

2019-11-09 22:52:15  阅读:225  来源: 互联网

标签:core 常用 Core Request filterContext Controller 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));
}

 

标签:core,常用,Core,Request,filterContext,Controller,HttpContext,写法
来源: https://www.cnblogs.com/Qintai/p/11828247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有