从 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 你的回答,我会接受,并删除我的。
我是 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 你的回答,我会接受,并删除我的。