如何使用 ajax 将 id 传递给部分视图控制器方法?

Posted

技术标签:

【中文标题】如何使用 ajax 将 id 传递给部分视图控制器方法?【英文标题】:How can I pass an id to a partial view controller method using ajax? 【发布时间】:2021-09-16 10:12:12 【问题描述】:

我正在尝试用这段 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 发送到控制器方法?

【问题讨论】:

【参考方案1】:

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

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

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

现在可以了! :)

【讨论】:

以上是关于如何使用 ajax 将 id 传递给部分视图控制器方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AJAX 将数据从视图传递到控制器

如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?

将模型从 jquery ajax 传递给控制器

Laravel + Datatables,如何将id传递给控制器 ?

如何在控制器中获取视图然后渲染数据并将其传递给 ajax

如何将 AJAX 请求中的 id 列表传递给 MVC 中的服务器