在客户端 - 服务器系统中创建和下载文本文件

时间:2013-02-07 17:25:29

标签: javascript asp.net silverlight dynamics-crm-2011

ms动态crm中的

我将在自己的功能区按钮上创建一个带有一些联系属性的文本文件。我希望将此文件保存或下载到客户端计算机,以便用户可以使用它。

我该怎么做?我在测试很多不同的方式时会发疯。

  • 使用javascript创建一个字符串并尝试使用数据uri将其下载。不工作

    var content = "test";

    window.open("data:text/octet-stream," + encodeURIComponent(content));

  • 尝试使用silverlight(localy我可以创建一个文件)但远程不能正常工作

  • 接下来的尝试是用服务器上的javascript和* .aspx文件填充/创建并创建一个文本文件。但我不知道这是否有效或者我能做些什么呢?

请给我一些解决这个问题的提示。

1 个答案:

答案 0 :(得分:0)

好的,我解决了。

在crm中我集成了javascript代码来打开一个aspx站点。

function CreateVCF() 
{
   var entityName = Xrm.Page.data.entity.getEntityName();
   var guid = Xrm.Page.data.entity.getId();
   window.open("http://xxxxx/vcfexport.aspx?guid="+guid+ "&name="+entityName );
}

然后我创建了一个vcard并将其重新下载

public partial class vcfexport : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {

        //Authenticate using credentials of iis       
        ClientCredentials Credentials = new ClientCredentials();

        Uri OrganizationUri = new Uri("http://server/org/XRMServices/2011/Organization.svc");
        Uri HomeRealmUri = null;

        OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, null);

        IOrganizationService service = (IOrganizationService)serviceProxy;

        String guidString = Request.QueryString["guid"];
        String entityName = Request.QueryString["name"];

        if (guidString != null && entityName != null && guidString != "" && entityName != "") {

            ColumnSet columnSet = new ColumnSet(true);
            Guid guid = new Guid(guidString);

            // retrieve the contact dataset
            Entity contactEntity = service.Retrieve(entityName, guid, columnSet);

            // create new vcard
            VCard vcard = new VCard();
            vcard.FirstName = contactEntity.GetAttributeValue<String>("firstname");
            vcard.LastName = contactEntity.GetAttributeValue<String>("lastname");
            //......

            String fileName = vcard.LastName + " " + vcard.FirstName + ".vcf";

            Response.ContentType = "text/x-vcard";
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
            // give download window
            Response.Write(vcard.ToString());
            Response.End();


        } else {
            lblError.Text = "Es ist ein Fehler aufgetreten. Entityname oder guid sind falsch";
        }
    }