برنامه نویسی

گزینه های بهتر برای LocalStorage در Dynamics 365 Ce

هنگام کار با برنامه های مدل محور یا اسکریپت های سفارشی در دینامیک 365 میلادی، ممکن است شما وسوسه شوید localStorage برای انتقال داده ها بین فرم ها. این سریع است – اما همچنین خطرناک است.

چرا localStorage می تواند در Dynamics ce مشکل ساز باشد

با استفاده از localStorage در یک Dynamics 365 CE زمینه با چندین اشکال همراه است:

  • در سطح جهان: در تمام زبانه ها و کاربران در همان دامنه به اشتراک گذاشته شده است.
  • ایمن نیست: در برابر حملات XSS آسیب پذیر – Data از ابزارهای مرورگر DEV قابل خواندن است.
  • آگاه از چرخه عمر نیست: به مرزهای فرم/جلسه در دینامیک احترام نمی گذارد.
  • فاقد پاکسازی است: داده ها می توانند بیش از حد مورد نیاز باقی بمانند و باعث تعارض منطق می شوند.

گزینه های بهتر در Dynamics 365 Ce

در اینجا روشهای قابل اعتماد تر و مطمئن تر برای انتقال داده ها بین فرم ها وجود دارد:

1 formParameters با Xrm.Navigation.openForm

اگر در حال باز کردن فرم به صورت برنامه ای (به عنوان مثال ، از یک روبان یا دکمه سفارشی) هستید ، از آن استفاده کنید formParameters:

Xrm.Navigation.openForm({
  entityName: "contact",
  formParameters: {
    sourceOrderId: "12345"
  }
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس ، در اسکریپت فرم هدف ، مقدار را بازیابی کنید:

const formContext = executionContext.getFormContext();
const params = Xrm.Utility.getGlobalContext().getQueryStringParameters();
const sourceOrderId = params["sourceOrderId"];
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این داده ها را به جلسه فرم تبدیل می کند و از آلودگی ذخیره جهانی جلوگیری می کند.

2. با استفاده از زمینه های پنهان

اگر بین سوابق مرتبط حرکت می کنید ، می توانید مقادیر را به طور موقت در زمینه های پنهان ذخیره کنید:

  • فیلد را از طریق افزونه/اسکریپت یا منطق فرم از قبل جمع کنید.
  • با استفاده از استاندارد آن را در فرم بعدی بازیابی کنید getAttribute().getValue() روش

این روش بومی CE Dynamics است و از گردش کار ، برق خودکار و حسابرسی پشتیبانی می کند.

3. ناوبری متقاطع از طریق قوانین روبان یا پارامترهای URL

برای سناریوهای ناوبری که در آن URL را به صورت دستی می سازید (توصیه نمی شود مگر اینکه لازم باشد) ، می توانید پارامترهایی را تعبیه کنید:

const url = `/main.aspx?etn=contact&pagetype=entityrecord&extraqs=sourceOrderId%3D12345`;
Xrm.Navigation.openUrl(url);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس ، بخوانید sourceOrderId از رشته پرس و جو با استفاده از:

const params = Xrm.Utility.getGlobalContext().getQueryStringParameters();
const sourceOrderId = params["sourceOrderId"];
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پایان

در حالی که localStorage استفاده از آن آسان است ، برای اکوسیستم Dynamics 365 CE طراحی نشده است. روشهای داخلی مانند را ترجیح دهید formParameters یا زمینه های پنهان برای حفظ امنیت ، زمینه کاربر و سازگاری پلتفرم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا