【发布时间】:2021-04-08 02:26:33
【问题描述】:
我正在建立一个小网站,用户可以在其中管理个人装备,其中包含名称和质量以及其他属性。我想在表格中显示所有这些齿轮,使用绑定到每个项目的输入框,以便用户可以根据需要更改值,然后点击编辑按钮并更新齿轮数据库。我可以让我的 foreach 循环绑定所有正确的值,但是当它路由到处理程序时,它总是将 EditGearName 和 EditGearMass 值设置为第一行中的任何值。
<table>
@foreach (var g in Model.Gears) {
<tr class="list-table-main">
<td><input class="form-control" asp-for="EditGearName" value="@g.GearName" /></td>
<td><input class="form-control" asp-for="EditGearMass" value="@g.Mass" type="number" min="0" /></td>
<td style="width:12.5%"><button type="submit" asp-page-handler="EditGear" asp-route-groupid="@gg.ID">Save</button></td>
</tr>
}
</table>
这是我在按下按钮时调用的处理程序方法的示例。 GearBL.EditGear 方法是处理将其保存到数据库的代码。我知道这行得通(只要传入正确的值)
public IActionResult OnPostEditGroup(int groupid)
{
try
{
base.OnGetParent();
if (string.IsNullOrEmpty(EditGearName))
throw new ValidationException("Gear name must not be empty");
if (EditGearMass < 0)
throw new ValidationException("Gear mass cannot be less than 0");
GearBL.EditGear(groupid, User, EditGearName, EditGearMass, false);
Response.Redirect("GearList");
}
catch (Core.Domain.ValidationException ve)
{
ModelState.AddModelError("Error", ve.Message);
}
return Page();
}
我是 asp.net/razor 的新手,因此我们将不胜感激。我什至不确定我是否有最好的方法来实现类似的东西。
【问题讨论】:
标签: c# asp.net asp.net-core razor