为什么 asp-路由传递 post 值“0”
Why is asp-route passing on post value "0"
在我的剃须刀页面表单中,我有一个按钮,在提交时调用带有参数 "int id":
的方法 "OnPostEditMe"
@{
var idbook = @Html.DisplayFor(a => a.EditBook.Id);
//idbook on page load gets id number of object EditBook when page loads, this works, if I add this value anywhere in razor page it displays correctly
}
<form method="post">
<div class="form-group row">
<div class="col-3 offset-3">
<button asp-page-handler="EditMe" asp-route-id="@idbook" type="submit">
Update @idbook
</button>
</div>
</div>
</form>
但是当我单击此按钮时,它会调用方法 OnPostEditMe,但使用参数“0”代替使用 "idbook":
加载的值
public async Task<IActionResult> OnPostEditMe(int id)
{
var tmp = id; //id is always 0
...
}
怎么了,为什么 asp-route-id="@idbook" 没有传递页面上加载的参数?
您必须在 form
而不是按钮
上设置
<form method="post" asp-route-id="@idbook">
或者你可以使用隐藏输入
<input value="@idbook" name="id" id="id" type="hidden"/>.
在我的剃须刀页面表单中,我有一个按钮,在提交时调用带有参数 "int id":
的方法 "OnPostEditMe"@{
var idbook = @Html.DisplayFor(a => a.EditBook.Id);
//idbook on page load gets id number of object EditBook when page loads, this works, if I add this value anywhere in razor page it displays correctly
}
<form method="post">
<div class="form-group row">
<div class="col-3 offset-3">
<button asp-page-handler="EditMe" asp-route-id="@idbook" type="submit">
Update @idbook
</button>
</div>
</div>
</form>
但是当我单击此按钮时,它会调用方法 OnPostEditMe,但使用参数“0”代替使用 "idbook":
加载的值public async Task<IActionResult> OnPostEditMe(int id)
{
var tmp = id; //id is always 0
...
}
怎么了,为什么 asp-route-id="@idbook" 没有传递页面上加载的参数?
您必须在 form
而不是按钮
<form method="post" asp-route-id="@idbook">
或者你可以使用隐藏输入
<input value="@idbook" name="id" id="id" type="hidden"/>.