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));
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM