为什么ajax发送给控制器的参数为空?
Why ajax send parameters to controller is null?
我通过 ajax 向控制器发送 post 请求:
这是我在 cshtml 文件中的代码:
<script>
$("#btnSeachAjax").click(function () {
var token = $('input[name="__RequestVerificationToken"]').val();
$.ajax({
url: '@Url.Action("Search")',
data: { id: "1",title:"ba"},
contentType: 'application/json',
type: 'POST',
headers: {
"RequestVerificationToken": token
},
success: function (data) {
$("#data").html(data);
}
,
error: function (req, status, error) {
alert(error);
}
});
return false;
});
</script>
这是我在控制器中的代码:
[HttpPost, ActionName("Search")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Search([FromBody] string id,string title)
{
var movie = await _context.Movies.FindAsync(id);
return View(movie);
}
id
的值,控制器中的 title
= null
。
为什么ajax向控制器发送参数为空?
我使用Asp.netmvc net core 3.1.
public async Task<IActionResult> Search([FromBody] string id,string title)
Value of id , title in controller = null.
根据您的操作方法和接受的参数,您可以尝试如下修改Ajax代码。
$.ajax({
url: '@Url.Action("Search")'+'?title=ba',
data: JSON.stringify("1"),
contentType: 'application/json',
type: 'POST',
//...
此外,您可以创建一个视图模型并修改您的操作以接受复杂类型参数,如下所示。
public class MyData
{
public string Id { get; set; }
public string Title { get; set; }
}
操作方法
public async Task<IActionResult> Search([FromBody] MyData myData)
{
//...
在 JS 客户端
$.ajax({
url: '@Url.Action("Search")',
data: JSON.stringify({ id: "1", title: "ba" }),
contentType: 'application/json',
type: 'POST',
//...
我通过 ajax 向控制器发送 post 请求:
这是我在 cshtml 文件中的代码:
<script>
$("#btnSeachAjax").click(function () {
var token = $('input[name="__RequestVerificationToken"]').val();
$.ajax({
url: '@Url.Action("Search")',
data: { id: "1",title:"ba"},
contentType: 'application/json',
type: 'POST',
headers: {
"RequestVerificationToken": token
},
success: function (data) {
$("#data").html(data);
}
,
error: function (req, status, error) {
alert(error);
}
});
return false;
});
</script>
这是我在控制器中的代码:
[HttpPost, ActionName("Search")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Search([FromBody] string id,string title)
{
var movie = await _context.Movies.FindAsync(id);
return View(movie);
}
id
的值,控制器中的 title
= null
。
为什么ajax向控制器发送参数为空?
我使用Asp.netmvc net core 3.1.
public async Task<IActionResult> Search([FromBody] string id,string title)
Value of id , title in controller = null.
根据您的操作方法和接受的参数,您可以尝试如下修改Ajax代码。
$.ajax({
url: '@Url.Action("Search")'+'?title=ba',
data: JSON.stringify("1"),
contentType: 'application/json',
type: 'POST',
//...
此外,您可以创建一个视图模型并修改您的操作以接受复杂类型参数,如下所示。
public class MyData
{
public string Id { get; set; }
public string Title { get; set; }
}
操作方法
public async Task<IActionResult> Search([FromBody] MyData myData)
{
//...
在 JS 客户端
$.ajax({
url: '@Url.Action("Search")',
data: JSON.stringify({ id: "1", title: "ba" }),
contentType: 'application/json',
type: 'POST',
//...