【问题标题】:Opening entity from external iframe CRM 2013从外部 iframe CRM 2013 打开实体
【发布时间】: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


【解决方案1】:

我在打开 CRM 2013 URL 时遇到了类似的问题,并且能够通过添加两个查询字符串 histKey(它以随机数作为值)和 newWindow 来解决它到网址,如下:

  • "histKey=" + Math.floor(Math.random() * 10000)
  • "newWindow=true"

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    尝试以下方法:

    1. 将 A 标记目标更改为 _blank

    2. 给窗口一个新名称,即 open(url, new_name, features)

    3. 一种解决方法可能是在您的 MVC 应用程序内创建一个 IFRAME,并将 URL 传递回最终打开帐户表单的 CRM 表单。

    4. 使用 Wscript.Shell ActiveX 打开一个新的 IE 进程(最后的手段)。

    5. 此链接可能会有所帮助 http://steveliles.github.io/cross_domain_inter_frame_communication_in_javascript.html

    HTH

    Dynamics CRM - Thinking outside the BOX

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多