這一個功能需求:
就是在此頁面(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區分)
(呈現結果)
以下為功能使用說明:
- 可移除Url:FlowQuotDetail?IsFlow=true 的標記,程式用"tabUniqueId" + User.SetFlowPermission(xxx) 來標記 進入此頁後都是用Flow的權限。
- 例:
//設定使用者的Flow權限
User.SetFlowPermission(TabUniqueId,permissions);
//=>這行就定義同 tabUniqueId 都是 採用 Flow Permission 。
//註:TabUniqueId 由 BaseController 可以拿到此屬性。
- 於BaseController 加上: IsFlow 屬性,以便於各程式判斷 Flow 狀態下的行為。
- 例如:按下更正時的行為,需由各頁面判斷flow的行為時該如何做:
- XXXX.Mis.Flow.Web.Models.FlowEngineModel 初始化已移除不需用的資訊:AccountId,Permissions (我專案已全做過修正)
- Flow的關卡權限定義為:$/XXXX/srcDev1_2/Webs/XXXX.Mis.Web/FlowPermissions.xls
(THE END)
0 意見 :
張貼留言