繁体   English   中英

ASP.NET 核心 MVC - Razor - asp-action 路由问题

[英]ASP.NET Core MVC - Razor - asp-action route issue

在创建表单并在 razor 中设置其路由时,我遇到了一个小问题。 在我看来,我有以下几点:

<form asp-action="Create" asp-controller="Lead">

但是,它将数据发布到我的 API 端点( api/lead/create )而不是我的标准 Controller ( lead/create )。

它生成以下 HTML:

<form action="/api/lead/create" method="post">

关于如何解决这个问题的任何建议? 我的 controller 路由是默认路由:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

如果我完全删除了我的 API 方法,那么它会选择正确的路线并且事情会按预期工作,但我似乎不能两者兼得?

我对这个不知所措。。

编辑:

这是铅 Controller 定义:

// GET: Lead/Create
public ActionResult Create()
{
    var viewModel = new CreateOrUpdateLeadViewModel();

    return View(viewModel);
}

// POST: Lead/Create
[Route("lead/create")]
[HttpPost]
[ValidateAntiForgeryToken]

这是 API Controller 上 Lead 方法的定义:

[Route("api/lead/create", Name = "apileadcreate")]
[HttpPost]
public async Task<IActionResult> Create([FromBody] LeadDto leadDto)

尝试为您的 MVC controller 提供路由名称:


[Route("lead/create", Name = "leadcreate")]
[HttpPost]
public async Task<IActionResult> Create([FromBody] LeadDto leadDto)

并将此语法用于表单:


<form asp-route="leadcreate" method="post">
    <!-- Input and Submit elements -->
</form>

正如你所说, asp-action="Create" asp-controller="Lead"将生成到action="/api/lead/create" 。我认为你可以尝试使用

<form action="/lead/create" method="post">

这样您就可以确保它不会 go 到/api/lead/create

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM