asp路由为什么传递发布值“ 0”

问题描述 投票:0回答:1

在表格的剃须刀页面中,我有一个按钮,在提交时调用带有参数“ 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”不会传递在页面上加载的参数?

asp.net parameter-passing core tag-helpers
1个回答
0
投票

您必须设置form而不是按钮

<form method="post" asp-route-id="@idbook">
© www.soinside.com 2019 - 2024. All rights reserved.