我将在自己的功能区按钮上创建一个带有一些联系属性的文本文件。我希望将此文件保存或下载到客户端计算机,以便用户可以使用它。
我该怎么做?我在测试很多不同的方式时会发疯。
使用javascript创建一个字符串并尝试使用数据uri将其下载。不工作
var content = "test";
window.open("data:text/octet-stream," + encodeURIComponent(content));
尝试使用silverlight(localy我可以创建一个文件)但远程不能正常工作
接下来的尝试是用服务器上的javascript和* .aspx文件填充/创建并创建一个文本文件。但我不知道这是否有效或者我能做些什么呢?
请给我一些解决这个问题的提示。
答案 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";
}
}