Показывает action="/"
вместо action="/Home/Login"
в форме, поскольку вы установили маршрут по умолчанию как /Home/Login
:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Login}/{id?}");
});
Если вы измените маршрут по умолчанию, он будет отображаться правильно .
Я попробовал ваш код, и проблема в привязке модели.
Во-первых, вам нужно удалить [FromBody]
, поскольку вы получаете данные из формы, а не из тела запроса.
Кроме того, ваша форма неправильно публикует данные, так как вы не задали атрибут name
или не используете тег-помощник asp-for
для своих входов, которые используются для привязки данных входов к модели на параметрах действия.
Наконец, посмотрите мое полное демо с моим предположением Login
модель:
public class Login
{
public string uname { get; set; }
public string pwd { get; set; }
}
Login.cs html (добавьте атрибут name
, который равен именам свойств модели Login
):
<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" name="uname" 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" name="pwd" 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>
POST action:
[HttpPost]
public async Task<IActionResult> Login(Login LoginModel)