【问题标题】:Controller Void Method On Button Click Using Ajax. ASP.NET使用 Ajax 单击按钮上的控制器无效方法。 ASP.NET
【发布时间】:2020-06-21 22:11:18
【问题描述】:

所以我有一个 .ASP MVC Web 应用程序项目。当我使用 AJAX 按下按钮时,我想从控制器类运行 void 方法。不需要可变的输入或输出数据。我只想创建一个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.cshtml 文件

@{
    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>

真的很高兴得到任何帮助

【问题讨论】:

  • 浏览器的开发控制台有错误吗?使用浏览器的调试工具时,网络请求是为AJAX调用发出的吗?服务器的响应是什么?
  • 您好,完全没有错误,没有任何事情发生。当我按下按钮时它不执行任何操作
  • 您忘记了“$”后面的(点)。 $.ajax。除此之外,一切正常。

标签: html ajax asp.net-mvc web-applications


【解决方案1】:

您的代码无法正常工作可能有多种原因。

  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);
    }

}

【讨论】:

  • 它说 (JS) Identifier expected on alert("Funciton is working");它在 Chrome 开发者工具中给出“Index:42 Uncaught ReferenceError: BtnClick is not defined at HTMLInputElement.onclick”。有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
相关资源
最近更新 更多