Не удается обновить частичное представление с помощью Ajax ASP.NET Core MVC - PullRequest
0 голосов
/ 30 июня 2018

Я хочу обновить свой частичный вид с помощью 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 Тест Контроллер:

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

какая у меня ошибка?

1 Ответ

0 голосов
/ 30 июня 2018

Вы указали 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);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...