asp.net-mvc - 找不到 ASP 核心路由 POST 页面
问题描述
我有标准的 asp 核心路由设置:
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
然后我有 4 个动作(2 个获取和 2 个发布):
public async Task<IActionResult> Edit(int? id)
{...}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, CustomDTO customDTO)
{...}
public async Task<IActionResult> Review(int? id)
{...}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Review(int id, DifferentCustomDTO differentCustomDTO)
{...}
Review form razor 的开头是这样的:
<form asp-action="Review">
两个网址都如下所示:
https://localhost/MyController/Review/12
在正常情况下,POST 操作会从 url 值中获取其 id,并从表单提交的数据中获取 CustomDTO。这一直有效,直到最近我开始得到这个:
This localhost page can’t be found No webpage was found for the web address:
https://localhost/MyController/Review/12
HTTP ERROR 404
我尝试删除 4 个中的 2 个以查看是否存在某种冲突,但这并没有改变任何东西。我怎样才能找到我搞砸的东西?
解决方案
您需要在帖子正文中添加一些数据,因为如果您使用的是此 URL:
https://localhost/MyController/Review/12
那么 post 请求的 HTML Body 将为空。尝试将隐藏字段添加到表单中,例如:
@Html.HiddenFor(e => e.Id)
推荐阅读
- docker - 什么是 ElasticSearch 更好的 OSS 替代品?
- ffmpeg - ffmpeg 水印:scale2ref 输出不能用于第二次叠加
- wordpress - Gravity Forms Wordpress:将用户角色重定向到特定页面
- mysql - 我如何 SQL 选择具有分组依据的唯一列?
- r - 是否有特殊的 .Rmd 模板可以在 pdf 中创建 R 包小插图?
- r - R Shiny:源命令在应用程序上打印 TRUE
- autofac - ACP.NET MVC 应用程序的多租户
- flutter - 为什么 Flutter StatefulWidget 子类需要重写默认构造函数?
- c++ - 在控制台中创建一个消息框函数并将参数(文本)传递给它
- javascript - Firebase v9 Firestore:一一添加2个文档