C# 获取表格单元格值并提交给删除函数

C# 获取表格单元格值并提交给删除函数,c#,asp.net-core,razor,razor-pages,C#,Asp.net Core,Razor,Razor Pages,我有一个显示数据库数据的表。我想提供一个按钮,根据所选行从表中删除数据。具体基于该表特定单元格的值 我曾尝试将表单元素中的一个按钮包装为每行中的一个额外元素,但这似乎不起作用,原因有二。1,它在我的控制器中触发OnGet()函数;2,它似乎没有将单元格数据值绑定到我的“SourceTable”属性 以下是我的前端表格: <table class="table"> <thead> <tr> <td>Or

我有一个显示数据库数据的表。我想提供一个按钮,根据所选行从表中删除数据。具体基于该表特定单元格的值

我曾尝试将表单元素中的一个按钮包装为每行中的一个额外元素,但这似乎不起作用,原因有二。1,它在我的控制器中触发OnGet()函数;2,它似乎没有将单元格数据值绑定到我的“SourceTable”属性

以下是我的前端表格:

<table class="table">
    <thead>
        <tr>
            <td>OrderIdentifier</td>
            <td>Step Number</td>
            <td>CreateDate</td>
            <td>Step Status</td>
            <td>Source Table</td>
        </tr>
    </thead>
    @foreach (var order in Model.order.Steps)
    {
        <tr>
            <td>@order.OrderIdenfitier</td>
            <td>@order.Name</td>
            <td>@order.CreateDate</td>
            <td>@order.StepStatus</td>
            <td>@order.SourceTable</td>

            <td>
                <a class="btn btn-dark"
                   asp-page="./OrderDetail"
                   asp-route-orderId="@order.OrderIdenfitier">
                    <i class="glyphicon glyphicon-zoom-in"></i>
                    Details
                </a>
            </td>
            <td>
                <form method="delete">
                    <input type="hidden" class="form-control" asp-for="SourceTable" />
                    <button type="submit" class="btn btn-dark">
                        <i class="glyphicon glyphicon-zoom-in"></i>
                        Delete
                    </button>
                </form>
            </td>
        </tr>
    }

我希望将SourceTable单元格的值传递给我的OnDelete函数,但没有这样做。此外,我的“OnGet()”函数是在单击删除按钮时触发的,而不是“OnDelete()”函数。我嵌入按钮的I表单具有action=“delete”,因此我认为它将转到OnDelete()函数,但情况似乎并非如此。

delete方法当前由
元素执行。这就是为什么在Razor页面中点击
OnGet()
。为此,您仍然可以使用
OnPost()
将表单值(例如隐藏输入)绑定到操作方法参数

第二个问题是您的
asp for
输入标记帮助程序。默认情况下,它根据
PageModel
计算其表达式。您可以使用
@
来覆盖该行为,尤其是当您正在使用时。您的表单可以如下所示:


行动方法:

public IActionResult OnPost(string SourceTable)
{
    // delete record here
    return RedirectToPage();
}
也许您不喜欢删除
OnPost
处理程序中的记录,您希望保留这些记录以用于其他操作。然后您可以使用like
OnPostDelete(string SourceTable)
。您只需将属性
asp page handler=“delete”
添加到
元素:


也许你不喜欢表格中每一行都有一个单独的表单。然后将表单环绕表格,并在每个删除按钮上使用
asp-route-
前缀指定参数绑定:


@foreach(Model.order.Steps中的变量顺序)
{
}

你可以在文章中找到更多有价值的信息。

谢谢,就这样。我不知道.net核心的命名处理程序是否可用。结果证明这正是我需要的。
public IActionResult OnPost(string SourceTable)
{
    // delete record here
    return RedirectToPage();
}