【问题标题】:silverlight open documentSilverlight 打开文档
【发布时间】:2012-04-25 20:42:52
【问题描述】:

我有一个浏览器托管的 SL 应用程序。我想要的很简单:应用程序生成一个文档(xls、doc、jpg...),用户单击一个按钮,然后可选地出现一个对话框,他需要单击确定,然后是 Excel、Word、一张图片查看器或任何启动并打开 SL 应用程序创建的文档。

到目前为止,我所看到的都是不完整的解决方案。

大多数人建议弹出一个 SaveFileDialog。首先,保存后,用户需要先找到文件才能打开,而他通常一开始都不想保存,直接查看即可。糟糕的用户体验。

另一种可能的解决方案是将文件保存在独立存储中并使用 COM 互操作启动 Excel。但我相信浏览器主机中没有 COM 互操作,并且 COM 互操作非常依赖于平台。我的 SL 应用也应该与 Moonlight 一起使用。

然后其他人建议将浏览器从 SL 重定向到文档的 HTTP 位置。这可以工作,但这并不能真正解决我的问题,因为我需要以某种方式将文档放在服务器上。

有人知道真正的解决方案吗?在这里也可以接受“否”作为答案。

【问题讨论】:

    标签: silverlight silverlight-4.0


    【解决方案1】:

    确定的答案是:不。您真正想从浏览器主机中执行的操作会违反我们对 Silverlight 插件的预期安全性。

    即将推出的 Silverlight 5 以某种方式满足您的要求,允许系统管理员使用组策略将受信任的行为授予运行 inbrowser 的某些 xap,但此解决方案是否会延伸到月光(以及何时会发生)是任何人的猜测。

    一些可能值得您考虑的问题,为什么运行在客户端上的 Silverlight 应用程序负责生成文档?仅仅是出于可扩展性的原因吗?如果不是,为什么要将文档生成代码移到服务器上?

    【讨论】:

      【解决方案2】:

      如果文件保存在服务器端,那么我们可以使用以下代码打开该文件

      string uri = HtmlPage.Document.DocumentUri.ToString();
      uri = uri.Remove(uri.LastIndexOf('#'), uri.Length - uri.LastIndexOf('#'));
      uri=uri.Remove(uri.LastIndexOf('/'));
      System.Windows.Browser.HtmlPage.PopupWindow(new Uri(uri + "/FolderName/filenamewithextension"), "_blank", null);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多