生成的表单asp-action标记帮助器包括id

时间:2019-08-26 09:29:16

标签: asp.net asp.net-mvc asp.net-core tag-helpers

我有以下表格

<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)。

2 个答案:

答案 0 :(得分:0)

在此标记中,ASP定义了将表单发送给控制器时在POST中传递的ID。

<input type="hidden" asp-for="Id" />

隐藏字段允许您在提交表单时将您的实体ID保留在表单中,而不会被用户看到或修改。

请参阅以下文档,作为对问题的补充。

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/controller-methods-views?view=aspnetcore-2.2

谢谢!

答案 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