【发布时间】:2014-07-22 08:31:46
【问题描述】:
我们有一个 CRM 2011 解决方案,其中包含几个自定义的基于 ASP.NET MVC 的视图和表单,这些视图和表单显示在 CRM 中实体的 iframe 中。目前我们正在对升级到 CRM 2013 进行一些分析,并且在打开实体窗口时遇到了问题。
我们在整个解决方案中主要使用了window.open,无论是在 CRM 方面的 JavaScript 中,还是在自定义 ASP.NET MVC 应用程序中。传递给window.open 的 URL 格式如下:
http://crm.contoso.com/Contoso-Org/main.aspx?etn=opportunity&pagetype=entityrecord&id={...}
问题在于,这似乎记住了在 CRM 2013 中打开时的上下文,因此它只是重新打开了打开它的实体。我们在 CRM 端通过使用 Xrm.Utility.openEntityForm 解决了这个问题,但对于自定义应用程序来说,这似乎是不可能的,因为我们无法从 iframe 内部访问 Xrm 库。 URL 是正确的,如果将其复制粘贴到新选项卡中,它会正确加载所需的实体。但是,当加载 window.open 时,它只会重新打开同一个实体。
一些建议指向在打开的 URL 中附加一个由随机生成的数字组成的 histKey 参数。但是,这并不能始终如一地工作 - 有时它会打开正确的实体,有时它只是重新打开当前实体 - 也没有在任何地方正式记录。
有没有人遇到过这个问题的解决方案?
【问题讨论】:
-
我对你的问题有点困惑。听起来您已经解决了从 CRM 中加载的问题,但是从您的 MVC 中,它不起作用?如果您从外部应用程序打开一个新窗口,“同一实体”是什么?
-
假设我正在查看商机记录。在那里,我们有一个 iframe 显示我们的 MVC 应用程序。 MVC 应用程序包含一个
<a>,它应该打开与机会相关的帐户。etn参数设置为account,GUID 指向Account 实体。但是,单击 URL 时,它只会打开与打开它的机会相同的机会。所以它以某种方式“记住”它来自的上下文,即使它是在新选项卡中打开的。 CRM 似乎附加了一个相同的哈希码,因此可能有一些内部状态在起作用。
标签: javascript dynamics-crm-2011 dynamics-crm-2013