我通过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.net mvc网络内核3.1。
发布于 2020-11-02 00:58:58
id的
public async Task<IActionResult> Search([FromBody] string id,string title)
值,控制器中的标题= 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',
//...
https://stackoverflow.com/questions/64642204
复制相似问题