Dynamics crm 2011 在CRM 2011中,将信息从javascript发送到插件的最佳方式

Dynamics crm 2011 在CRM 2011中,将信息从javascript发送到插件的最佳方式,dynamics-crm-2011,dynamics-crm,crm,Dynamics Crm 2011,Dynamics Crm,Crm,我在CRM 2011表单上有一个HTML web资源,用户将在其中输入数据。如果用户选择保存主表单,CRM创建/更新插件将需要此数据,但不需要将数据保存到实体上的任何字段。我正在考虑一个隐藏的虚拟字段,可以将数据保存到其中,但我想知道是否有更优雅的方法可以将数据从客户端持久化到服务器技术。我对“共享变量”做了一些研究,但无法确定它们是否能够满足这一需求。任何使用JavaScript设置值,然后从插件检索值的例子都是有价值的 编辑:我只是想澄清我在测试中收到的回复。虽然CRM有“SharedVar

我在CRM 2011表单上有一个HTML web资源,用户将在其中输入数据。如果用户选择保存主表单,CRM创建/更新插件将需要此数据,但不需要将数据保存到实体上的任何字段。我正在考虑一个隐藏的虚拟字段,可以将数据保存到其中,但我想知道是否有更优雅的方法可以将数据从客户端持久化到服务器技术。我对“共享变量”做了一些研究,但无法确定它们是否能够满足这一需求。任何使用JavaScript设置值,然后从插件检索值的例子都是有价值的


编辑:我只是想澄清我在测试中收到的回复。虽然CRM有“SharedVariables”可供插件和脚本使用,但脚本中保存的任何数据都将不可供插件使用。由一个javascript函数保存到“SharedVariables”的数据将可用于为同一事件注册的其他javascript函数,由插件保存的数据可用于为同一事件注册的其他插件,但数据不会从脚本保存到插件,反之亦然。这使得虚拟字段成为将数据从javascript持久化到插件的唯一选项。正如NickNow所建议的,除非您需要将数据持久化到数据库中,否则在预插件上删除它将是一个好主意。谢谢你,我知道

隐藏/虚拟字段是正确的方法<从插件的角度来看,在数据发送到服务器之前,代码>共享变量不存在

表单保存只是一个触发创建或更新事件的UI——从平台的角度来看,您只需发送实体逻辑名称、记录guid(用于更新)和字段/值。插件不知道,也不需要知道事件是如何触发的

我要做的是创建一个字段(例如“new_internalmessaging”)作为文本字段(因为我永远不会将该值持久化到数据库,我只是将其设置为2000个字符的字符串)。在JavaScript OnSave事件期间,我将需要的任何数据捕获到一个对象中,并创建一个JSON字符串,然后使用该字符串填充字段

在我的Pre-Create和Pre-Update插件中,我检索字符串并将其反序列化为一个对象,以便在我的插件中使用(如果后期插件需要它,我也可以将其放入
SharedVariable
)。此时,插件代码应该从
目标
中删除
new\u internalmessaging


我这样做是为了确保该字段中的数据永远不会持久化到CRM。

更好的方法是什么1-在预创建/预更新时检索字符串并基于该字符串执行自定义逻辑2-将字符串存储在SharedVariable中,然后在创建/后更新时,从SharedVariable获取字符串并执行自定义逻辑?这将取决于您的逻辑应该执行Pre还是Post。在不了解业务需求的情况下,我无法真正告诉您如何进行设计。这两种方法都是可行的,我以前在项目中都使用过。