首页 > 解决方案 > 如何使用 ajax 将 id 传递给部分视图控制器方法?

问题描述

我正在尝试使用这段 jQuery 刷新部分视图:

$(function () {
    setInterval(RefreshAgenda, 3000);
});

function RefreshAgenda() {
    var data = {"id":"@Model.Id"};
    $.ajax({
        type: "POST",
        url: "/Meetings/AgendaPartial",
        data: JSON.stringify(data),
        contentType: "application/json; charset=utf-8",
        dataType: "html",
        success: function (response) {
            $('#_Agenda').html(response);
        }
    });
}

控制器方法:

[HttpPost]
public async Task<IActionResult> AgendaPartial(string id)
{
    if (id == null) return NotFound();
    if (!Guid.TryParse(id, out Guid parsedId)) return NotFound();
    Meeting meeting = await db.Meetings
        .Include(a => a.Agenda)
        .Where(m => m.Id == parsedId).FirstOrDefaultAsync();
    return PartialView("_Agenda", auto.Map<MeetingViewModel>(meeting));
}

@Model.Id包含一个有效的id,但是当我们到达方法时,id= null,并返回 404,如方法所指示的那样。

如果我尝试通过键入 /Meetings/AgendaPartial/{id} 直​​接访问该方法,则部分视图将成功返回。

如何更改脚本以成功发送id到控制器方法?

标签: c#ajaxasp.net-core-mvc

解决方案


发布此问题后,我偶然发现了另一种方法:

function RefreshAgenda() {
    var data = { id: "@Model.Id.ToString()" };

    $.post('/Meetings/AgendaPartial', data,
        function (response) {
            $('#_Agenda').html(response);
        });
}

现在它起作用了!:)


推荐阅读