Метод Void Controller при нажатии кнопки, используя Ajax. ASP.NET - PullRequest
0 голосов
/ 10 марта 2020

Итак, у меня есть проект веб-приложения. ASP MVC. Я хочу запустить метод void из класса контроллера, когда я нажимаю кнопку, используя AJAX. Нет переменных входных или выходных данных не требуется. Я просто хочу создать PDF-файл и сохранить его на моем локальном компьютере.

Сейчас, когда я нажимаю кнопку, ничего не происходит. Я не думаю, что скрипт ajax работает, соединение 0. Это мой метод Контроллера:

    [HttpPost]
    public void Test()
    {
        string dok = System.IO.File.ReadAllText("C:\\Users\\axel\\Desktop\\Repo\\Cert\\employee_regular.html");
        var Renderer = new IronPdf.HtmlToPdf();
        var HtmlTemplate = dok;

        var Pdf = Renderer.RenderHtmlAsPdf(HtmlTemplate);
        Pdf.SaveAs("C:\\Users\\axel\\Desktop\\Repo\\Cert\\Arbetsgivarintyg_vanlig_heltid.pdf");

    }

Это мой Index.cs html file

@{
    ViewBag.Title = "Home Page";
}


<div class="row">
    <div class="col-md-12">
        <h2>Request employement certificate</h2>




       <input type="button" onclick="BtnClick()" value="Click me" />



    </div>
</div>
<script>
    function BtnClick() {
        $ajax({
            url: "/Home/Test",
            method: "POST",
            success: function () {
                alert("ok");
            },
            error: function () {
                alert("not ok")
            }
        })
    }

</script>

Действительно рад любой помощи

1 Ответ

0 голосов
/ 10 марта 2020

Ну, может быть несколько причин, по которым ваш код не работает.

  1. Сначала Убедитесь, что вы действительно можете сделать вызов функции, просто добавьте простое предупреждающее сообщение перед вызовите ajax и посмотрите, сработает ли предупреждение.

  2. Во-вторых, необходимо проверить URL-адрес, заменить его жестко закодированным URL-адресом и добавить URL-адрес с помощью URL-помощника.

  3. Я бы порекомендовал вам сделать функцию как JsonResult вместо Void, потому что при создании pdf может произойти исключение. [Это изменение не является обязательным, но я рекомендую его]

Так что после всех изменений ваш код будет выглядеть примерно так

@{
      ViewBag.Title = "Home Page";
    }


    <div class="row">
      <div class="col-md-12">
        <h2>Request employement certificate</h2>

        <input type="button" onclick="BtnClick()" value="Click me" />

      </div>
    </div>
    <script>
      function BtnClick() {
        $ajax({
          alert("Funciton is working"); // change confirm function is working
          url: "@Url.Action("Test","Home")", // change using Url Helper to create valid URL
          method: "POST",
          success: function (data) {
             if (data == true)
                {
                  alert("pdf created sucessfully ok");
                }
             else
                {
                 alert("exception happend when creating pdf not ok");
                }

          },
          error: function () {
            alert("not ok")
          }
        })
      }

</script>

Ваш сервер будет выглядеть как-то как это

[HttpPost]
public JsonResult Test()

{

    try {
        string dok = System.IO.File.ReadAllText("C:\\Users\\axel\\Desktop\\Repo\\Cert\\employee_regular.html");
        var Renderer = new IronPdf.HtmlToPdf();
        var HtmlTemplate = dok;

        var Pdf = Renderer.RenderHtmlAsPdf(HtmlTemplate);
        Pdf.SaveAs("C:\\Users\\axel\\Desktop\\Repo\\Cert\\Arbetsgivarintyg_vanlig_heltid.pdf");
        return Json(true, JsonRequestBehavior.AllowGet);
    }
    catch(Exception ex) {
        return Json(false, JsonRequestBehavior.AllowGet);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...