I'm trying to POST a form to my controller the same way that I used to do with ASP.NET MVC 5 but it's not working.
The controller:
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Login([FromBody] Login LoginModel)
{
return View();
}
And HTML
<form asp-action="Login" asp-controller="Home" method="post" class="mt-4">
<div class="row">
<div class="col-lg-12">
<div class="form-group">
<label class="text-dark" for="uname">E-mail</label>
<input class="form-control" id="uname" type="text"
placeholder="digite e-mail">
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<label class="text-dark" for="pwd">Senha</label>
<input class="form-control" id="pwd" type="password"
placeholder="digite sua senha">
</div>
</div>
<div class="col-lg-12 text-center">
<button type="submit" class="btn btn-block btn-dark" />
</div>
</div>
</form>
I tried to use the helper:
@using (Html.BeginForm("Login", "Login", FormMethod.Post))
{
}
But the HTML generated doesn't pass the controller path :
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages().AddRazorRuntimeCompilation();
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Login}/{id?}");
});
}

<button asp-controller="Home" asp-action="Index">/Home/Loginunless you provided an id value, which you haven't.