ajax调用控制器以获取mvc中的页数

时间:2019-02-07 05:26:34

标签: ajax asp.net-mvc

我需要获取上载的PDF文档的页数。单击按钮有效,但不能转到控制器方法。

我的观点:

<div class="form-group">
            <input type="file" id="fileupload" accept="application/pdf" />
            <button type="button" onclick="pagecount()">Upload</button> 

        @Html.Label("Number Of Pages", htmlAttributes: new { @class = "control-label col-md-2" })
        @ViewBag.pageCount
</div>

这是我的ajax脚本:

 $(document).ready(function (e) {var frmData = null;
        function pagecount() {
            frmData = new FormData();
            var totalFiles = document.getElementById("fileupload").files.length;
            var file = document.getElementById("fileupload").files[0];
            frmData.append("fileupload", file);
            $.ajax({
                url: '/ProductAPI/PageCount@*@Url.Action("PageCount", "ProductAPI")*@',
                data: frmData,
                type: 'POST',
                async: true,
                enctype: 'multipart/form-data'
            });
        }
    }); 

这是我的控制器方法:

[HttpPost]
public void PageCount(FormCollection formCollection)
{
    var file = Request.Files[0];
    byte[] fileData = new byte[Request.Files[0].ContentLength];
    PdfReader reader = new PdfReader(fileData);
    ViewBag.pageCount = reader.NumberOfPages;
}

1 个答案:

答案 0 :(得分:0)

请参考我的方法。 从pageCount()中删除document.ready()的javascript函数,因为您需要从外部范围调用它。

用错误的值添加contentTypeprocessData。更新的功能

 function pagecount() {
        frmData = new FormData();
        var totalFiles = document.getElementById("fileupload").files.length;
        var file = document.getElementById("fileupload").files[0];
        frmData.append("fileupload", file);
        $.ajax({
            url: '/ProductAPI/PageCount',
            dataType: "json",
            data:frmData,
            contentType: false,
            processData: false,
            type: 'POST',
            success: function (response) {
                $('#pageCount').html(response);
            },
        });
    }

点击按钮即可调用此javascript函数。

 <button type="button" onclick="javascript:pagecount()">Upload</button> 

在Mvc Action中,返回页数如下所示作为json对象

  public JsonResult PageCount()
    {
        var file = Request.Files[0];
        byte[] fileData = new byte[Request.Files[0].ContentLength];
        PdfReader reader = new PdfReader(fileData);

        return Json(reader.NumberOfPages);
    }

在ajax的成功函数中更新视图

success: function (response) {
            $('#pageCount').html(response);
        },

这对我有用:)。谢谢