首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用javascript函数并在.net代码中使用返回的结果

调用javascript函数并在.net代码中使用返回的结果
EN

Stack Overflow用户
提问于 2014-03-14 19:09:51
回答 3查看 1.2K关注 0票数 0

我一直在寻找一种从我的default.aspx.cs file...after中调用javascript函数的方法--在这里阅读一些问题,我发现了这种方法(Call JavaScript function from C#),但是我需要在file...after代码中使用来自javascript函数的返回值。

我需要抓取用户在画布上的输入,并将其保存到图像中,并将该图像附加到pdf文件中。

以下是js函数:

代码语言:javascript
复制
    getSignatureImage: function () {
    var tmpCanvas = document.createElement('canvas')
      , tmpContext = null
      , data = null

       tmpCanvas.style.position = 'absolute'
       tmpCanvas.style.top = '-999em'
       tmpCanvas.width = element.width
       tmpCanvas.height = element.height
       document.body.appendChild(tmpCanvas)

       if (!tmpCanvas.getContext && FlashCanvas)
           FlashCanvas.initElement(tmpCanvas)

           tmpContext = tmpCanvas.getContext('2d')


           tmpContext.fillStyle = settings.bgColour
           tmpContext.fillRect(0, 0, element.width, element.height)
           tmpContext.lineWidth = settings.penWidth
           tmpContext.strokeStyle = settings.penColour

           drawSignature(output, tmpContext)
           data = tmpCanvas.toDataURL.apply(tmpCanvas, arguments)

           document.body.removeChild(tmpCanvas)
           tmpCanvas = null

           return data
        }

下面是在我的default.aspx.cs中生成代码的pdf:

代码语言:javascript
复制
        document.SetMargins(20f, 20f, 85f, 20f);
        long milliseconds2 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
        //Document document = new Document();
        var output = new FileStream(Server.MapPath("~/PDFs/Test-File-" + milliseconds2 + ".pdf"), FileMode.Create);
        pdfUrlLink = "Test-File-" + milliseconds2 + ".pdf";
        var writer = PdfWriter.GetInstance(document, output);

        // the image we're using for the page header      
        iTextSharp.text.Image imageHeader = iTextSharp.text.Image.GetInstance(Request.MapPath(
        "~/Images/pdfHeader.jpg"
        ));

        // instantiate the custom PdfPageEventHelper
        MyPageEventHandler ex = new MyPageEventHandler()
        {

            ImageHeader = imageHeader
        };
        // and add it to the PdfWriter
        writer.PageEvent = ex;
        document.Open();
        createContent();
        document.Close();
        submitEmail(); 
          }
    }

这是从其他问题中修改的代码,将两个世界集成在一起:

代码语言:javascript
复制
        string SignData = null;
        Page page = HttpContext.Current.CurrentHandler as Page;
        page.ClientScript.RegisterStartupScript(typeof(Page), "Test", "<script type='text/javascript'>" + SignData +"=getSignatureImage();</script>");

它不work...Any的帮助或输入将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-14 19:41:47

您不想从您的C#代码中调用javascript函数。您想要做的是将javascript函数中的数据发布到您的web应用程序中,以便您的C#代码能够处理它。

画布所在的客户端HTML将有一个按钮,当单击该按钮时,调用您的javascript从画布中获取dataUrl,并将其放入表单字段(比如隐藏的输入或其他什么),然后提交表单。

您的C#代码将从Request.Form集合中提取值。该值是Base64编码的图像,因此您需要将其转换为位图,然后在您的PDF输出中使用它。

这里有一个快速的小提琴演示:http://jsfiddle.net/LSRYG/

代码语言:javascript
复制
function submitImage(){
    var url = document.getElementById('canv').toDataURL();
    //this will show you the image data but you won't actually want to do this.  It's just for the demo
    alert(url);
    //put it in the hidden imput and submit the form.
    document.getElementById('canvImg').value = url;

    document.getElementById('theform').submit();
}

我相信您可以找到如何将dataURL字符串转换为C#代码中的图像。

票数 2
EN

Stack Overflow用户

发布于 2014-03-14 19:23:45

您发现的是如何运行告诉浏览器在ASP.NET应用程序中的页面加载上运行Javascript。

我认为您正在寻找的是.NET中的Javascript编译器。

票数 0
EN

Stack Overflow用户

发布于 2014-03-14 19:32:38

您能更改任何导致回发只运行一些javascript的控件吗?然后,只需调用一个以__dopostback ()作为事件参数的getSignatureImage,并从中找出它。

基本上使用带有onclick="SendEmail();"function SendEmail{ _doPostBack([controlClientID], getSignatureImage()); },然后在页面上检查__EVENTTARGET(第一个param) __EVENTTARGET(第一个param) == (任何客户端id ),如果匹配,则处理__EVENTARGUMENT(第二个param),这将是您的getSignatureImage()结果。

或者创建一个send方法或服务来发送带有getSignatureImage()结果的电子邮件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22413749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档