<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MVC和WebAPI如何從Filter向Action中傳遞數據

      http://www.itfanr.cc/2016/04/17/transfer-data-from-filter-to-action/

      MVC和WebAPI如何從Filter向Action中傳遞數據

      需求

      最近在策劃實現MVC項目中用戶身份驗證的功能時,考慮用MVC中的Filter過濾器來先從url鏈接中獲取傳遞過來的token,在Filter中通過token獲取用戶的信息后,如果用戶信息正確,則傳遞到ControllerAction中進行用戶數據的操作。

      那么,要如何從Filter中向Action中傳遞數據呢?

      how to pass data from filter to controller?


      注意:下面所提到的Filter都指實現ActionFilterAttribute的過濾器

      MVC中 從Filter過濾器向Action中傳遞數據

      方法一 通過 RouteData 來傳值
      1
      2
      3
      4
      5
      //賦值:
      filterContext.RouteData.Values.Add("Tname",UName);

      //獲取:
      var nm = RouteData.Values["Tname"];
       

      測試通過。

      詳見: ASP.NET MVC Pass object from Custom Action Filter to Action - Stack Overflow


      方法二 通過 ActionParameters 來傳值

      另一種方法是通過 ActionParameters 來設置,但在Action中是通過添加參數獲取值的:

      1
      2
      3
      4
      //賦值:  
      filterContext.ActionParameters.Add("number", Id);
      //獲?。?
      public ActionResult Index(int number, Person person)
       

      詳見: Manipulating Action Method Parameters - You’ve Been Haacked

      通過測試,發現這種方法可以隱藏真實的Action方法:

      比如:
      請求的鏈接是 http://localhost:47760/home/show?id=3&name=abc
      而實際的Action為:

      1
      public ActionResult Show(string aaa){}
       

      那么可以通過添加一個 ActionFilterAttribute 過濾器,并設置:

      1
      2
      this.Uname=getquerystring.name;
      filterContext.ActionParameters["aaa"] = UName;
       

      這樣雖然url中請求的參數時id和name,而實際請求參數是aaa

      而實際的請求鏈接 http://localhost:47760/home/show?aaa=haha 也是可以訪問的。


      方法三 通過 HttpContext.Items 來傳值
      1
      2
      3
      4
      //Filter中賦值:  
      filterContext.HttpContext.Items["tname"] = UName+"2324";
      //Action中取值:
      var nm= HttpContext.Items["tname"];
       

      測試通過。

      通過測試發現好像這種方式比較合適。因為:可看到Items的解釋為:

      在派生類中重寫時,獲取一個鍵/值集合,該集合在 HTTP 請求過程中可以用于在模塊與處理程序之間組織和共享數據。

      詳見: asp.net mvc - Accessing Action Filter's data in Controller Action - Stack Overflow


      WebAPI中從Filter向Action中傳遞數據

      如何從Filter向Action中傳遞數據?

      方法一 通過 Request.Properties 來傳值
      1
      2
      3
      4
      //Filter中賦值:  
      actionContext.Request.Properties["id"] ="134";
      //Action中獲取:
      var id= Request.Properties["id"];
       

      或:

      1
      2
      3
      4
      5
      6
      //賦值:  
      actionContext.Request.Properties.Add("mykey", myObject);
      //獲?。?
      object myObject;
      Request.Properties.TryGetValue("mykey", out myObject);
      //cast to MyType
       

      測試通過。

      詳見:


      總結

      MVC 用 :

      1
      filterContext.HttpContext.Items[UnitOfWorkRequestKey] = UnitOfWork;
       

      Web API 用 :

      1
      actionContext.Request.Properties[UnitOfWorkRequestKey] = UnitOfWork;
       

      詳見: c# - Web API Action Filter - Controller.TempData equivalent? - Stack Overflow

      posted @ 2022-02-23 14:19  紫尋落  閱讀(421)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人精品久久性色av| 国内精品自线在拍| 国产精品三级黄色小视频| 一区二区三区精品视频免费播放| 亚洲国产精品18久久久久久| 亚洲精品国产电影| 亚洲av日韩av综合在线观看| 黄频在线播放观看免费| 庄河市| 亚洲老熟女一区二区三区| 亚洲中文字幕久久精品品| 亚洲国产精品日韩专区av| 久久天天躁狠狠躁夜夜躁2020 | 亚洲区综合中文字幕日日| 粉嫩国产一区二区三区在线| 亚洲AV无码午夜嘿嘿嘿| 阜南县| 精品午夜福利在线视在亚洲| 国产一级片内射在线视频| 国产中年熟女大集合| 污污内射在线观看一区二区少妇| 日本韩国一区二区精品| 人妻无码∧V一区二区| 依依成人精品视频在线观看| 日韩精品久久久肉伦网站| 呼和浩特市| 1区2区3区4区产品不卡码网站| 国产99视频精品免视看9| 国产精品人妻系列21p| 欧洲一区二区中文字幕| 亚洲欧美综合中文| 亚洲欧美人成电影在线观看| 久久99国产精品久久99| 亚洲国产av区一区二| 四虎成人在线观看免费| 国产偷人妻精品一区二区在线| 久热这里有精品视频播放| 国产午夜精品福利免费看| 国产美女精品自在线拍免费| 久久久精品午夜免费不卡| 韩国午夜理伦三级|