将 asp-route-id 更新为 jQuery

Update asp-route-id with jQuery

我正在构建一个 razor pages 应用程序,我想使用模态作为局部视图。

从我打开模态的地方开始的 Foreach 循环:

@foreach (var item in Model.SourceFiles)
                {

                    <tr>
                        <td>@item.Id</td>
                        <td>@item.FileName</td>
                        <td>@item.Created</td>
                        <td>
                            @(item.IsConverted == true ? "Exported" : "Imported")
                        </td>
                        <td>
                            <button type="submit" class="btn btn-primary" asp-page-handler="FileContent" asp-route-fileId="@item.Id">View</button>
                        </td>
                        <td>
                            @if ((await authorizationService.AuthorizeAsync(User, "DeletePolicy")).Succeeded)
                            {
                                <a href="#" class="btn btn-danger" onclick="triggerDeleteModal(@item.Id)">Delete</a>
                            }
                        </td>
                    </tr>
                }

我正在尝试使用 javaScript (jQuery) 设置 asp-route-id 标签的新值,但我无法让它工作。

function triggerDeleteModal(itemId) {
    $('#' + 'deleteModal').modal('toggle');
    $("#confirmDeleteButton").attr('asp-route-deleteid', itemId)
}

模态(局部视图):

<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="deleteModalTitle">Caution!</h5>
            </div>
            <div class="modal-body">
                <p style="white-space: pre-wrap;">@Model.DeleteModalText</p>
                <p></p>
            </div>
            <div class="modal-footer">
                <button type="submit" id="confirmDeleteButton" class="btn btn-secondary" data-bs-dismiss="modal">Yes</button>
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">No</button>
            </div>
        </div>
    </div>
</div>

当在模式中按下是按钮(#confirmDeleteButton)提交表单时,id 没有在 asp-route-deleteid 标签助手中传递,id 始终为 0 OnPost 方法。

deleteid始终为0的代码:

public async Task<IActionResult> OnPostAsync(int deleteid)
{ 
    //code for deleting stuff
}

当尝试 console.log 除 asp 路由标签之外的任何属性的值时,将显示该值。尝试记录 asp-route 标记的值时,该值未定义。

关于如何将 asp-route-deleteid 传递给后面的代码有什么想法吗?

BR

asp-route-* 属性适用于标签助手,它们是 server-side 组件。它不会呈现给浏览器并且无法访问 JavaScript。它旨在与具有 hrefactionformaction 属性的元素一起使用,并且它将属性值添加到生成的 href 的查询字符串中,或​​者作为 URL 根据目标页面的路由模板进行细分。

通常,您不应在 URL 中传递 POST 数据,因此您可以将点击事件处理程序连接到 confirmDeleteButton 以启动 [=22] =] post 即传递 deleteid:

$('#confirmDeleteButton').on('click, function(){
    $.post('/yourpage',{deleteid: itemId}, function(){
        // process the call back
    })
})