代码之家  ›  专栏  ›  技术社区  ›  RationalGeek

从Silverlight生成要保存在用户计算机上的文件,而不命中服务器

  •  3
  • RationalGeek  · 技术社区  · 14 年前

    现在很明显,我可以将用户启动到一个URL并在服务器上进行导出,然后将响应的MIME类型更改为Word或PDF。这样就行了。然而,问题是,我已经在客户端拥有了正确的数据(包括复杂的过滤器等),在服务器上重新创建此数据集,以便再次将其发送回客户端,如果我可以避免,这看起来很愚蠢。

    有没有办法在Silverlight中使用现有的一组数据并生成Word或PDF文件并将其放到用户的计算机上?我也可以从JavaScript中使用Silverlight的浏览器互操作来实现。我 不要 想使用浏览器外的Silverlight。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Donut    14 年前

    你需要使用 SaveFileDialog class . 请注意,由于Silverlight的安全设置 保存文件对话框 需要作为用户事件的结果打开(例如,按钮单击)。

    可以使用属性(如 DefaultExt Filter 在使用 ShowDialog() 方法。

    显示对话框() 方法将返回 true 如果用户正确指定了一个文件并单击“确定”。如果是这样的话,你可以打电话给 SaveFileDialog.OpenFile() 方法访问此文件并将数据写入其中。

    例子:

    private void Button_Click(object sender, EventArgs e)
    {
       SaveFileDialog saveDialog = new SaveFileDialog();
       if (saveDialog.ShowDialog())
       {
          System.IO.Stream fileStream = textDialog.OpenFile();
          System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream);
          sw.Write("TODO: Generate the data you want to put in your file");
          sw.Flush();
          sw.Close();
       }
    }