首页 > 解决方案 > 如何使用 asp.net core 3 从 SelectList 中选择一个 Id?

问题描述

我正在遍历一个列表并填充一个表,其中最后一列有一个编辑按钮来编辑该 Id 特定请求。

现在,无论我单击什么按钮,它总是将我带到列表中第一个 Id 的编辑页面,而且 URL 中的每个 Id 都像这样列出。/EditRequest?SelectedId=127&SelectedId=128 为什么将 SelectedId 设置为列表中的所有值?以及如何只传递所选的一个 ID?

这是我的模型

    public class MyRequestsViewModel
    {
        public MyRequestsViewModel()
        {
            this.MyRequests = new List<SelectListItem>();
        }
        public List<SelectListItem> MyRequests;
        public int SelectedId { get; set; }
    }

我正在遍历 MyRequests 并希望将 SelectedId 发送到控制器

    <form method="get" asp-controller="Home" asp-action="EditRequest">
    <table id="SortRequestsTable" class="table table-striped">
        <thead>
            <tr>
                <th>SortID</th>
                <th>SortCriteria</th>
                <th>Edit</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model.MyRequests)
            {
                <tr>
                    <td>@item.Value</td>
                    <td>@item.Text</td>
                    <td>
                        <input asp-for="SelectedId" type="hidden"  value="@item.Value" />
                        <button>@item.Value<span class="sap-icon">&#xe038;</span></button>
                    </td>
                </tr>
            }
        </tbody>
    </table>
</form>

我的控制器一直说 SelectedId 是 0

public IActionResult EditRequest(MyRequestsViewModel requests)

我得到了它的工作。但我不想在按钮中显示 Id 值。

<input asp-for="SelectedId" type="submit" value="@item.Value" /><span class="sap-icon icon-16">&#xe038;</span>

我也尝试过使用 asp-route-SelectedId 标签助手,但我不完全确定如何实现它。

标签: asp.net-mvcformsasp.net-core

解决方案


尝试下面的代码以实现从索引页面编辑。

<a asp-action="Edit" asp-route-id="@item.ID">Edit</a> |

和控制器接受请求

// GET: Tickets/Edit/5
public async Task<IActionResult> Edit(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    var ticket = await _context.Tickets.FindAsync(id);
    if (ticket == null)
    {
        return NotFound();
    }            
    return View(ticket);
}

推荐阅读