c# - ASP.NET Core MVC - Razor - asp-action 路由问题
问题描述
在创建表单并在剃刀中设置其路由时,我遇到了一个小问题。在我看来,我有以下几点:
<form asp-action="Create" asp-controller="Lead">
但是,它将数据发布到我的 API 端点 ( api/lead/create
) 而不是我的标准控制器 ( lead/create
)。
它生成以下 HTML:
<form action="/api/lead/create" method="post">
关于如何解决这个问题的任何建议?我的控制器路由是默认的:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
如果我完全删除了我的 API 方法,那么它会选择正确的路线并且事情会按预期工作,但我似乎不能同时拥有这两者?
我对这个不知所措。。
编辑:
这是主要控制器定义:
// GET: Lead/Create
public ActionResult Create()
{
var viewModel = new CreateOrUpdateLeadViewModel();
return View(viewModel);
}
// POST: Lead/Create
[Route("lead/create")]
[HttpPost]
[ValidateAntiForgeryToken]
这是 API 控制器上 Lead 方法的定义:
[Route("api/lead/create", Name = "apileadcreate")]
[HttpPost]
public async Task<IActionResult> Create([FromBody] LeadDto leadDto)
解决方案
正如你所说,asp-action="Create" asp-controller="Lead"
会生成到action="/api/lead/create"
。我认为你可以尝试使用
<form action="/lead/create" method="post">
这样你就可以确保它不会去/api/lead/create
推荐阅读
- javascript - 如何提交表单并同时执行 javascript
- c# - 是否可以将图像拖动到 Winform GeckoFX 浏览器?
- javascript - 如何在猫鼬中使用带有地图的异步等待?
- python - Pygame掩码在错误区域发生碰撞
- powerquery - 有没有办法在 Power Query 中用小计替换空值?
- python - 如何使用python bs4提取javascript变量
- r - tidyverse 是否提供基于 xts 范围的查询?
- github - 这个错误意味着我在 git 提交后得到了什么?
- css - 如何在 IntelliJ 中配置“回车键跳过”行为?
- r - 在 R -SVM 中,测试集中的预测变量少于训练集中的预测变量