首页 > 解决方案 > 在 ASP.NET Core MVC 中创建登录页面

问题描述

我正在尝试创建一个登录页面。但它说没有找到页面。

我已将其包含在Startup.cs

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{Controller=LoginController}/{action=Login}");
});

Login.cshtml页面位于视图中Views/Login/Login.cshtml ,控制器位于 Controllers 文件夹下,名称LoginController.csLoginController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace AdminControl.Controllers
{
    public class LoginController : Controller
    {
        // POST: LoginController
        [HttpPost]
        public IActionResult Login()
        {
            return View();
        }

    }
}

Login.cshtml

<form asp-action="Users/Index" class="form-group" id="login-form" method="post" runat="server" style="text-align: center;">
    <input class="form-control" placeholder="ID" runat="server" style="text-align: center;"/>
    <input class="form-control" placeholder="Password" runat="server" style="text-align: center;" type="password"/>
</form>

<button class="btn btn-info" form="login-form" value="Submit" type="submit">Submit</button>

出了什么问题?

标签: c#.net-coreasp.net-core-mvc

解决方案


修复模式中的错误:“{Controller=LoginController}/{action=Login}”);

 pattern: "{Controller=Login}/{action=Login}");

但最好使用标准的默认模式

 pattern: "{controller=Home}/{action=Index}/{id?}");

并在检查用户是否尚未登录后从索引操作重定向到登录控制器

正如@IsmailDiari 所注意到的,你应该有两个动作——一个是获取登录表单,另一个是发布登录表单。但你还需要一个模型:

public class LoginViewModel
{
public string Login {get; set;}
public string Password {get; set;}


}

在此更改控制器和视图之后,如下所示:

        [HttpGet]
        public IActionResult Login()
        {
            var viewModel=new LoginViewModel;
            return View(viewModel);
        }
        // POST: When submitting the login credentials
        [HttpPost]
        public IActionResult Login(LoginViewModel viewModel)
        {
            
        }

登录表单:

@model LoginViewModel
  
    @using (Html.BeginForm())  
    {      
      <input class="form-control" asp-for = "Login" name="login" placeholder="Login" runat="server" style            
 ="text-align: center;"/>
     <input class="form-control" asp-for="Password" name="password" placeholder="Password" runat="server" style="text-align: center;" type="password"/>
     <input type="submit" value="Login" class="btn btn-primary" />
      
    }  


推荐阅读