从Ribbon JScript CRM Online 2011调用C#代码

Cha*_*had 9 javascript c# dynamics-crm dynamics-crm-2011 dynamics-crm-online

我需要在实体上单击功能区按钮执行一些代码,该实体可以从CRM Online 2011更新一些相关数据.我宁愿不必在JScript中编写所有这些逻辑.有没有办法从JScript调用C#代码?我查看了Microsoft在功能区中使用的JScript文件,它看起来像这样:

Mscrm.Campaign.copyCampaign = function (campaignId, saveAsTemplate) {
    var $v_0 = new RemoteCommand("MarketingAutomation", "CopyCampaign", null);
    $v_0.SetParameter("campaignId", campaignId);
    $v_0.SetParameter("saveAsTemplate", saveAsTemplate.toString());
    var $v_1 = $v_0.Execute(),
        $v_2 = $v_1.ReturnValue;
    openObj(Mscrm.EntityTypeCode.Campaign, $v_2, null, null, Mscrm.NavigationMode.NavigationModeInline, null);
    Mscrm.Utilities.refreshParentGrid(Mscrm.EntityTypeCode.Campaign, campaignId)
};
Run Code Online (Sandbox Code Playgroud)

我看到正在放置一个RemoteCommand调用,我假设它正在回到一些Web服务功能.我希望能做到这样的事情.我可以添加自己的Web服务功能吗?

我能够从JScript调用为实体发送"分配"消息,就像测试一样.这可能适用于插件,但为执行事件发送消息似乎很奇怪,实际上并不只是为了运行一些C#代码("分配","更新"等)而且我不喜欢看到创建自己的消息的方法.

Mat*_*att 10

您无法在2011年添加自己的Web服务或创建自己的自定义插件消息.我们发现这样做的最佳方式是:

  1. 设置一个专门存在的实体,以在服务器上运行自定义代码.
  2. 为它提供称为消息名称的属性和另一个属性,以您选择的任何格式传递参数(XML,JSON等)
  3. 从JavaScript中,创建传递正确参数的实体实例.
  4. 将一个插件附加到该实体的Create消息,然后读取参数并执行您想要的任何自定义代码.

虽然只是随机传递一个Assign消息或某些东西可能会起作用,但它可能在微软的眼中是不受支持的,如果其他人不得不看这个系统就很难调试.