Ajax无法将html页面作为参数传递给后面的代码

时间:2015-05-29 12:09:13

标签: javascript jquery html ajax vb.net

我正在处理使用SelectPdf将网页转换为pdf文件的任务。 SelectPdf不支持动态页面。所以我想使用Ajax将网页作为html传递。

由于某种原因,当我通过普通字符串时,它可以工作,但当我改为使用变量(用html作为值)时,它不会。我不知道html内容是否太大,但我尝试的内容较少,但问题仍然存在。任何帮助将不胜感激。

该项目的语言是VB.Net,页面是vbhtml,后面的代码是控制器。

请参阅下面我已实施的代码:

查看     

           var btn = $('#BtnCreateHtmlToPdf');

           btn.click(function () {

            var theHtml = document.documentElement.innerHTML;

            //Just to see there is a value
            alert(theHtml)  

            $(function () {
                $.ajax({
                    type: 'post',
                    url: "/CreatHtmlToPdf/CreatePdf",
                    dataType: "html",
                    data: { HTML: theHtml }
                })
                .done(function (results) {
                    alert("Html data: " + results);
                });
            });
           });

代码背后

Public Class CreatHtmlToPdfController
    Inherits Controller

    ' GET: CreatHtmlToPdf
    Function Index() As ActionResult

        Return View()
    End Function

    <HttpPost()>
    Function CreatePdf(ByVal HTML As String) As ActionResult

        Dim doc As PdfDocument

        ' read parameters from the webpage
        Dim htmlString As String = HTML

        ' instantiate a html to pdf converter object
        Dim converter As New HtmlToPdf()

        ' create a new pdf document converting an url
        If (HTML <> String.Empty) Then

            doc = converter.ConvertHtmlString(htmlString)


        End If


        ' save pdf document
        Dim pdf As Byte() = doc.Save()

        ' close pdf document
        doc.Close()

        ' return resulted pdf document
        Dim fileResult As FileResult = New FileContentResult(pdf, "application/pdf")
        fileResult.FileDownloadName = "Results_page.pdf"
        Return fileResult

    End Function

    'Declaration
    'Public Property EnablePageMethods As Boolean

End Class

1 个答案:

答案 0 :(得分:0)

尝试在CreatePdf函数上方添加ValidateInput(false)属性,以防止标准ASP MVC验证阻止发布HTML。

<HttpPost()> _
<ValidateInput(false)> _
Function CreatePdf(ByVal HTML As String) As ActionResult

如果您接受ViewModel类,则可以选择将AllowHTML属性添加到包含HTML数据的单个属性。