从 ajax returns 调用控制器函数 “__RequestVerificationToken” 不存在(果园)mvc

Call controller function from ajax returns “__RequestVerificationToken” is not present(orchard) mvc

我是 Orchard 的新人,但我知道它就像 mvc。

我有一些表格和按钮,我不习惯使用

@*@using (Html.BeginForm("UploadImage1","FileUpload", FormMethod.Post))
{
<input type="submit" value="Save to DataBase" id="btn_UploadImg" onclick="btn_Upload_Click()" />
}

为了在服务器上捕获我的事件,我想使用 onclick 然后使用 ajax 调用我的控制器函数。

这是我的 Html 更新:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
      <script......</script>

    </head>

    <body>

        <!-- form goes here -->

        <div class="container">
            <section id="content">

                    <form action="">
                   @Html.AntiForgeryToken()
                        <h1>Files Upload Form</h1>

   <input type="submit" value="Save" id="btn_UploadImg" onclick="btn_Upload_Click()" />
                    </form>

            </section><!-- content -->
        </div><!-- container -->

    </body>

我的 JavaScript 已更新:

    function btn_Upload_Click() {

       var token = $('input[name="__RequestVerificationToken"]').val();

$.ajax({
    url: '@Url.Action("UploadImage2", "FileUpload")',
    type: 'POST',
    data: {
        sNum: "123",
        "__RequestVerificationToken": token
    },
    traditional: true,
    success: function () {
    },
    error: function (xhr) {
        alert(xhr.responseText);

    }
});

    }

还有我的控制器

namespace VnModule.Module.Controllers
{
    public class FileUploadController : Controller
    {

     [HttpPost]
    [ValidateAntiForgeryToken]
    public void UploadImage1(string sNum)
    {
        int myNumber = Int32.Parse(sNum);

    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public void UploadImage2(string sNum)
    {
        int myNumber = Int32.Parse(sNum);


    }


    }
}

我收到此错误:"__RequestVerificationToken" is not present

我做错了什么?

lzzy解决了这个问题,我已经更新了代码。

要解决此问题,您需要这样做:

1.Add @Html.AntiForgeryToken() 在您的表单内部是您的按钮所在的位置。

   <form action="">
  @Html.AntiForgeryToken()
  <input type="submit" value="Save" id="btn_UploadImg" onclick="btn_Upload_Click()" />
            </form>

2.In 您的 ajax 添加到数据参数 __RequestVerificationToken,值为

$('input[name="__RequestVerificationToken"]').val();

像这样

 data:{
   sNum: "123",
  __RequestVerificationToken: $('input[name=__RequestVerificationToken]').val()
     }

lzzy 随意 post 你的回答,我会接受,并删除我的。