无法使用 Ajax ASP.NET 核心 MVC 更新部分视图



我想用Ajax更新我的部分视图,但由于某种原因,它不起作用。如果我使用 load 方法(和注释 ajax 代码(,它可以工作。这是我的代码:

这是我的主要观点:

@model IEnumerable<WebApplicationMVC.Models.Test>
@{
ViewData["Title"] = "Testing";
}
<div id="partial">
@await Html.PartialAsync("Question", Model.ToList()[0])
</div>
<input type="button" id="b" value="next" class="btn btn-default" />
<script>
$("#b").click(function () {
//this code doesn't work
$.ajax({
url: 'Test/Question',
type: 'GET',
contentType: "application/json; charset=utf-8",
data: { id: '@Model.ToList()[1].ID' },
dataType: "json",
success: function (result) {
$("#partial").html(result);
}
});
//this code works
@*$("#partial").load('@Url.Action("Question","Test",new { id=Model.ToList()[1].ID })');*@
});

这是我的问题操作方法int测试控制器:

public IActionResult Question(int id)
{
return View(Methods.GetTestById(id));
}

我犯了什么错误?

您已经指定了dataType: "json",但您的方法返回视图 (html(,而不是JsonResult因此会引发异常。

省略dataType选项(函数将根据响应解决它(或将其更改为dataType: 'html'

此外,您可以删除contentType选项。您正在创建一个没有正文的 GET,因此它被忽略(如果它是一个 POST,您的方法也会失败,因为您没有串化数据(。

您的 url 也应该/Test/Question(前导正斜杠(,并且您应该始终使用@Url.Action()方法来生成 url

你的函数应该是

$.ajax({
url: '@Url.Action("Question","Test")',
type: 'GET',
data: { id: '@Model.ToList()[1].ID' },
success: function (result) {
$("#partial").html(result);
}
});

最新更新