演练:使用开发人员扩展构建连接到 Microsoft Dynamics CRM 2015 的 Web 应用程序

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

本演练演示如何编写连接到 Microsoft Dynamics CRM 2015 并执行基本的创建联系人事务的简单 Web 应用程序。

您可以在 Sdk\Walkthroughs\Portal\WebAppWalkthrough 文件夹中找到本演练产生的示例代码。

本主题内容

生成早期绑定类型

在 Visual Studio 中设置 Web 应用程序项目

创建网页 – 联系人网格 1

创建另一个网页 – 联系人网格 2

创建 WCF 数据服务

创建网页 – 联系人窗体 1

创建另一个网页 – 联系人网格 3

生成早期绑定类型

  1. 使用 Microsoft.Xrm.Client.CodeGeneration 扩展运行 CrmSvcUtil.exe 工具,以生成实体类和服务上下文。 以下示例命令创建一个名为“Xrm.cs”的文件,该文件指向 Microsoft Dynamics 365 的实例。 请注意,在运行该命令时,Microsoft.Xrm.Client.CodeGeneration.dll 文件必须与 CrmSvcUtil.exe 文件位于同一目录中,或者位于系统全局程序集缓存中。 此处显示的第一个命令针对本地组织,第二个命令针对 CRM Online 组织。 两个命令应作为一个命令行执行,没有换行符。

        CrmSvcUtil.exe 
        /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" 
        /out:Xrm\Xrm.cs 
        /url:http://Crm/Contoso/XRMServices/2011/Organization.svc 
        /domain:CONTOSO 
        /username:administrator 
        /password:pass@word1 
        /namespace:Xrm 
        /serviceContextName:XrmServiceContext
    
        CrmSvcUtil.exe
        /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration"
        /out:Xrm.cs /url:https://<mydomain>.api.crm.dynamics.com/XRMServices/2011/Organization.svc
        /username:<myusername>@<mydomain>.onmicrosoft.com /password:<mypassword> /namespace:Xrm /serviceContextName:XrmServiceContext
    

    提示

    CrmSvcUtil 工具在 SDK 下载的 Bin 文件夹中,或通过安装 Microsoft.CrmSdk.CoreToolsNuGet 包获取。

在 Visual Studio 中设置 Web 应用程序项目

  1. 在 Microsoft Visual Studio 中新建一个 ASP.NET Web 应用程序项目。 此示例使用“WebAppWalkthrough”作为项目名称。

    在 Visual Studio 中创建 Web 应用程序

  2. 添加以下来自 SDK\bin 文件夹的引用。 您可以通过安装 Microsoft.CrmSdk.ExtensionsNuGet 包来跳过此步骤和下一步骤。

    • AntiXSSLibrary.dll

    • Microsoft.Crm.Sdk.Proxy.dll

    • Microsoft.Xrm.Client.dll

    • Microsoft.Xrm.Portal.dll

    • Microsoft.Xrm.Portal.Files.dll

    • Microsoft.Xrm.Sdk.dll

  3. 添加以下来自 .NET 的引用。

    • System.IdentityModel.dll

    • Microsoft.Data.Entity.dll

    • System.Data.Services.dll

    • System.Data.Services.Client.dll

    • System.Runtime.Caching.dll

    • System.Runtime.Serialization.dll

  4. 在 Visual Studio 中右键单击该项目,单击“添加”,然后单击“现有项”。

  5. 选择生成早期绑定类型时创建的“xrm.cs”文件。

  6. 编辑 web.config 文件以注册 <microsoft.xrm.client> 节。 您需要向配置中的 configSections 节点添加一节,如此处所示。

    <configuration>
      <configSections>
        <section name="microsoft.xrm.client"
          type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client" />
    
  7. 使用特定的连接字符串和上下文编辑 web.config 文件。 对于连接字符串,请将名称设置为“Xrm”。 在 <microsoft.xrm.client> 节中,添加名为“Xrm”的上下文,并将类型设置为您在设置 Web 应用程序项目时的步骤 1 中提供的命名空间和服务上下文名称。 在以下示例中,该名称为 Xrm.XrmServiceContext,类型的程序集部分是您的 Web 应用程序的名称“WebAppWalkthrough”。

    <connectionStrings>
      <add name="Xrm" connectionString="Server=http://crm/contoso; Domain=CONTOSO; Username=Administrator; Password=pass@word1" />
    </connectionStrings>
    <microsoft.xrm.client>
      <contexts>
        <add name="Xrm" type="Xrm.XrmServiceContext, WebAppWalkthrough" />
      </contexts>
    </microsoft.xrm.client>
    
  8. 将以下内容添加到 web.config 文件的 <controls> 节中,以便向该 Web 应用程序注册 Microsoft.Xrm.Portal 控件。

    <system.web>
      <pages>
        <controls>
          <add tagPrefix="crm" namespace="Microsoft.Xrm.Portal.Web.UI.WebControls" assembly="Microsoft.Xrm.Portal" />
    

创建网页 – 联系人网格 1

创建一个在 ASP.NET 数据网格中显示 Dynamics 365 系统中的所有联系人的基本网页。

  1. 右键单击项目,然后添加一个名为“WebForm_LinqDataSource.aspx”的新 Web 窗体。

  2. 将以下项添加到新 aspx 页面中:

    <!--This example lists all contacts from the Microsoft Dynamics CRM system. -->
    <asp:LinqDataSource ID="Contacts" ContextTypeName="Xrm.XrmServiceContext" TableName="ContactSet" runat="server" />
    <asp:GridView DataSourceID="Contacts" AutoGenerateColumns="false" runat="server">
        <Columns>
            <asp:TemplateField HeaderText="First Name">
                <ItemTemplate>
                    <asp:Label Text='<%# Eval("firstname")%>' runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Last Name">
                <ItemTemplate>
                    <asp:Label Text='<%# Eval("lastname")%>' runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="City">
                <ItemTemplate>
                    <asp:Label Text='<%#Eval("address1_city") %>' runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    
  3. 生成项目。

  4. 右键单击 aspx 页面,然后选择“在浏览器中查看”。 结果应类似如下:

    在浏览器中查看

创建另一个网页 – 联系人网格 2

基于 Dynamics 365 视图定义,创建一个在 ASP.NET 数据网格中显示 Dynamics 365 系统中的联系人的网页。

  1. 右键单击项目,然后添加一个名为“WebForm_SavedQueryDataSource.aspx”的新 Web 窗体。

  2. 将以下项添加到新 aspx 页面中:

    <crm:SavedQueryDataSource ID="ActiveContacts" SavedQueryName="Active Contacts" runat="server" />
    <asp:GridView DataSourceID="ActiveContacts" runat="server" />
    
  3. 生成项目。

  4. 右键单击 aspx 页面,然后选择“在浏览器中查看”。 该页面将使用视图定义“可用联系人”返回记录,并在 ASP.NET GridView 控件中显示视图的属性。 结果应类似如下:

    在浏览器中查看

创建 WCF 数据服务

为 Microsoft Dynamics 365 创建 WCF 数据服务。

  1. 右键单击项目并添加一个名为“CrmData.svc”的新 WCF 数据服务:

    创建数据服务

  2. 您需要将该 WCF 数据服务指向在本演练开头创建的 XrmServiceContext。 按如下所示编辑 CrmData.svc.cs 文件:

    namespace WebAppWalkthrough
    {
        public class CrmData : DataService<Xrm.XrmServiceContext>
        {
            // This method is called only once to initialize service-wide policies.
            public static void InitializeService(DataServiceConfiguration config)
            {
                config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
                config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
                config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
            }
        }
    }
    

创建网页 – 联系人窗体 1

基于 Microsoft Dynamics 365 视图定义创建一个呈现联系人数据输入窗体的网页:

  1. 在 Dynamics 365 中,转到“设置”、“自定义”和“自定义系统”。 为名为“创建联系人 Web 窗体”的 contact 实体创建一个新视图。

    创建网页

  2. 将您希望在生成的窗体中显示为字段的列添加到视图中。

  3. 单击“保存并发布”。

  4. 在 Microsoft Visual Studio 中右键单击 Web 项目,然后添加一个名为“WebForm_FromSavedQuery.aspx”的新 Web 窗体。

  5. 将以下代码添加到新 aspx 页面中:

    <asp:ScriptManager runat="server" />
    <crm:CrmDataSource ID="Contacts" runat="server" />
    <crm:CrmEntityFormView DataSourceID="Contacts" EntityName="contact" SavedQueryName="Create Contact Web Form" runat="server" />
    
  6. 生成项目。

  7. 右键单击 aspx 页面,然后单击“在浏览器中查看”。 结果应类似如下:

    在浏览器中查看

创建另一个网页 – 联系人网格 3

创建一个使用代码隐藏将 Microsoft Dynamics 365 数据源连接到 ASP.NET GridView 控件的网页。

  1. 右键单击项目,然后添加一个名为“WebForm_CodeBehindDataSource.aspx”的新网页。

  2. 将以下代码添加到新 aspx 页面中:

    <asp:GridView ID="ContactsGridView" AutoGenerateColumns="false" runat="server">
        <Columns>
            <asp:TemplateField HeaderText="First Name">
                <ItemTemplate>
                    <asp:Label Text='<%# Eval("firstname")%>' runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Last Name">
                <ItemTemplate>
                    <asp:Label Text='<%# Eval("lastname") %>' runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="City">
                <ItemTemplate>
                    <asp:Label Text='<%# Eval("address1_city") %>' runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    
  3. 按如下所示编辑代码隐藏文件 WebForm_CodeBehind.aspx.cs:

    using System;
    using System.Linq;
    using Xrm;
    
    namespace WebAppWalkthrough
    {
        public partial class WebForm_CodeBehind : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                var xrm = new XrmServiceContext("Xrm");
    
                //Use all contacts where the email address ends in @example.com.
                var exampleContacts = xrm.ContactSet
                    .Where(c => c.EMailAddress1.EndsWith("@example.com"));
    
                ContactsGrid_CodeBehind.DataSource = exampleContacts;
                ContactsGrid_CodeBehind.DataBind();
            }
        }
    }
    
  4. 生成项目。

  5. 右键单击 aspx 页面,然后单击“在浏览器中查看”。 结果应类似如下:

    在浏览器中查看

另请参阅

Microsoft Dynamics CRM 2015 门户开发人员指南
Dynamics CRM 2015 的门户演练

© 2017 Microsoft。 保留所有权利。 版权