【发布时间】:2019-05-05 00:30:43
【问题描述】:
我正在创建一个 .NET Core API 来读取/写入/更新/删除数据库中的信息。我已经建立了骨骼,现在我正在尝试合并视图以使事情看起来更好。我使用 Visual Studio 2017 的脚手架功能来设置一些基本视图。现在,index.cshtml 视图有效,它显示来自数据库每一行的信息以及编辑、查看详细信息或删除每一行的选项。这是通过以下 3 行添加的,它们被放入 foreach 语句中的 <td> 标记中以循环遍历数据库的结果(item 是数据库结果集中的每一行被调用的内容)
<a asp-action="Edit" asp-route-id="@item.id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.id">Details</a> |
<a asp-action="Delete" asp-route-id="@item.id">Delete</a>
到目前为止,唯一对我有用的是详细信息链接,它使用我的控制器类中的一个函数,让我看到只有那一个特定行的视图。我注意到编辑和详细信息的 href 没有获取行的 ID,因此这些链接只会让我回到我已经在的索引页面。通过将鼠标悬停在每个链接上,我可以看到每个 href 都设置为 -
编辑: localhost:port/api/results
详细信息: localhost:port/api/results/1 (我相信其他两个应该是这样的)
删除: localhost:port/api/results
我已经做了一些调试/调查,这里是我的问题:
如果多个路由执行不同的操作,它们是否可以具有相同的 URI?例如,详细信息链接是 HttpGet,而删除是 HttpDelete。如果它们使用不同的 HTTP 方法,它们是否可以具有相同的 URI?
在 Razor 正确组合路由之前,是否必须有一个控制器对给定路由执行某些操作?
我错过了什么可能是 ID 未添加到超链接的原因?所有 3 条 edit/details/delete 路由设置完全相同,但 ID 仅添加到路由中以获取详细信息,而不是编辑或删除。
【问题讨论】:
标签: c# razor .net-core asp.net-core-mvc