2013/11/08

20131108-程式-MVC的RenderAction原來可以取的到Parent的ViewContext資訊

這一個功能需求:

就是在此頁面(Page)下,所使用的RenderAction(XXX) ,(包括它RenderAction 內的 RenderAction ~~~)
都要取得該Page 的tabUniqueId 資訊。
來表示同一頁!

目前就是進入 Flow 時,我要將它的User 權限,改為  Flow權限,用Flow 權限去Load 資訊。

找了好久,原來 MVC 它有記住它的「Parent」是誰,

如此一來,我就可以由Parent 資訊取得其 tabUniqueId了。


在 BaseController 裡,若它有Parent 資訊,才會出現這個 Key 值。


就這樣一層一層的取到 Parent 資訊,拿下它的 tabUniqueId:


  if (String.IsNullOrEmpty(tabUniqueId) && route.DataTokens.ContainsKey("ParentActionViewContext"))
            {
                var parentContext = route.DataTokens["ParentActionViewContext"] as ViewContext;//取得父值的資訊
                tabUniqueId =(parentContext.ViewData["tabUniqueId"] as string ?? "");
            }

=======================
在找解決方法時,Search 下的key 還真是不知如何下,

後來看到 http://goo.gl/AmUQnZ 這一篇文章 (雖不是解決方法)

但對 RouteData.DataTokens
這屬性有興趣,就開始去看它的 屬性資訊,看看看~~~就看到 "ParentActionViewContext" !!!! 

所以,這樣的資訊就一路帶進去了。


=============================================================
後來針對 Flow 的部份,發出來 給 文忠 的說明文件    (以此僅做個人資訊記錄而已)

解決 進入Flow頁面後,User權限全是以「Flow 權限」來決定。
調整Flow Permission 的使用方式,以達到需求:
Check In 版本:
5734        howard chiang        2013/11/8 下午 07:15:56        20131108-進入Flow頁面,可以於各patial下保留住Flow的權限狀態(tabUniqueId區分)
5728        howard chiang        2013/11/8 下午 06:10:44        20131108-進入Flow頁面,可以於各patial下保留住Flow的權限狀態(tabUniqueId區分)

(呈現結果)

以下為功能使用說明:
  1. 可移除Url:FlowQuotDetail?IsFlow=true   的標記,程式用"tabUniqueId" +  User.SetFlowPermission(xxx) 來標記 進入此頁後都是用Flow的權限。
    1. 例:

            //設定使用者的Flow權限
            User.SetFlowPermission(TabUniqueId,permissions);
//=>這行就定義同 tabUniqueId 都是 採用 Flow Permission
//註:TabUniqueId BaseController 可以拿到此屬性。

  1. BaseController 加上: IsFlow 屬性,以便於各程式判斷 Flow 狀態下的行為
    1. 例如:按下更正時的行為,需由各頁面判斷flow的行為時該如何做:
  1.  
  2.  XXXX.Mis.Flow.Web.Models.FlowEngineModel  初始化已移除不需用的資訊:AccountId,Permissions  (我專案已全做過修正)

  1. Flow的關卡權限定義為:$/XXXX/srcDev1_2/Webs/XXXX.Mis.Web/FlowPermissions.xls



(THE END)

0 意見 :

張貼留言