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

时间:2018-06-30 11:20:02

标签: ajax asp.net-core-mvc

我想用Ajax更新我的局部视图,但是由于某些原因,它不起作用。如果我使用加载方法(并注释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 Test 控制器:

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

我有什么错误?

1 个答案:

答案 0 :(得分:0)

您已指定/mnt/d1 10.0.0.0/24(rw,sync,no_subtree_check) ,但是您的方法返回的是视图(html),而不是dataType: "json",,因此会引发异常。

要么忽略JsonResult选项(该函数将根据响应进行计算),要么将其更改为dataType

此外,您可以删除dataType: 'html'选项。您正在制作一个没有主体的GET,因此将其忽略(如果它是POST,则由于未对数据进行字符串化,您的方法也会失败)。

您的网址也应为contentType(正斜杠),并且您应始终使用/Test/Question方法生成网址

您的功能应该是

@Url.Action()