【发布时间】:2021-05-04 15:04:01
【问题描述】:
在创建表单并在 Razor 中设置其路由时,我遇到了一个小问题。我的看法如下:
<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)
【问题讨论】:
-
你能用 Create action pls 显示 LeadController 吗?
-
@Sergey 我已经更新了问题以包含每个问题的定义 - 这有帮助吗?
标签: c# asp.net asp.net-mvc asp.net-core razor