【问题标题】:Can we access JavaScript object on Serverside C# asp.net [duplicate]我们可以访问服务器端 C# asp.net 上的 JavaScript 对象吗?
【发布时间】:2013-08-05 23:51:48
【问题描述】:

在我的 Asp.net Web 应用程序中,我必须生成 pdf,之前我曾经使用 itextsharp (服务器端/付费服务) 来完成此任务,现在我发现 jspdf 可以在客户端完成,而且它是开源的。

这里是生成pdf的示例代码

  var doc = new jsPDF();
  doc.text(20, 20, 'Hello world!');
  doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
  doc.addPage();
  doc.text(20, 20, 'Do you like that?');
  doc.save('Test.pdf');

对于实际工作,我需要通过应用一些逻辑(服务器端编码)来获取数据,所以我想知道我是否可以在服务器端访问 doc 即(c#)或任何其他方式?

【问题讨论】:

  • @Juhana:谢谢,但没有一个答案是正确的,它也被标记为asp.net mvc,我的是简单的asp.net c#
  • 无论服务端技术是什么,原理都是一样的。没有一个答案被接受并不意味着它们不正确。

标签: javascript asp.net c#-4.0 client-side serverside-javascript


【解决方案1】:

您无法访问doc 对象(jsPDF 对象)。您可以做的是客户端通过 web 服务或其他一些 api 向服务器询问它需要的数据,或者如果您需要的是 pdf 签名,客户端可以以某种方式将 pdf 发送到服务器(通过 web 服务或一些rest api),然后服务器可以发回 pdf ......但这会使使用客户端 pdf 生成毫无用处。

还有一些其他选项:如果您让生成 PDF 的按钮往返于服务器(然后在往返之后启动 PDF 的生成),则可以通过以下方式在页面中插入一些额外的数据服务器,所以

<asp:Button ID="btnPdf" runat="server" Text="Generate PDF" OnClick="btnPdf_Click" />

and in btnPdf_Click:

ClientScriptManager.RegisterStartupScript(this.GetType(), "PdfKey", "GeneratePdf();", true);

and in the Javascript:

function GeneratePdf()
{
    // If it's a string, it's better that you escape the content of <%= %>
    // for example with HttpUtility.JavaScriptStringEncode in ASP.NET 4.0
    var serverData = <%= SomeNetVariableFilledByBtnPdf_Click %>;
    // generate the pdf
}

【讨论】:

  • 感谢您的及时回复,现在我必须调用 ajax 请求并获取数据作为响应并附加到我的 doc 变量中。作为一个开源项目,我正在尝试对其进行一些研究
  • @Satindersingh 是的,但你没有传递 doc 变量。
  • 感谢您编辑的答案给了我一个好主意
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
  • 2014-09-06
  • 1970-01-01
相关资源
最近更新 更多