我有以下表格
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<div class="form-group">
<label asp-for="Title" class="control-label"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ReleaseDate" class="control-label"></label>
<input asp-for="ReleaseDate" class="form-control" />
<span asp-validation-for="ReleaseDate" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Genre" class="control-label"></label>
<input asp-for="Genre" class="form-control" />
<span asp-validation-for="Genre" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Price" class="control-label"></label>
<input asp-for="Price" class="form-control" />
<span asp-validation-for="Price" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
运行项目并进入 Edit 操作视图后,我在浏览器的源代码中看到<form asp-action="Edit">
被翻译为<form action="/Movies/Edit/2" method="post">
我的问题是,ASP如何知道id
中的"/Movies/Edit/2"
(2)。
答案 0 :(得分:0)
在此标记中,ASP定义了将表单发送给控制器时在POST中传递的ID。
<input type="hidden" asp-for="Id" />
隐藏字段允许您在提交表单时将您的实体ID保留在表单中,而不会被用户看到或修改。
请参阅以下文档,作为对问题的补充。
谢谢!
答案 1 :(得分:0)
根据我们的路由规则,应始终从URL中具有ID的URL传递编辑表单,例如/ Movies / edit / 1。
该表单始终会回发到相同的URL / Movies / edit / 1。
MVC框架将能够从URL中提取该ID并将其作为参数传递。
请参阅https://www.tutorialspoint.com/asp.net_core/asp.net_core_razor_edit_form.htm