c# - 在 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.cs
为LoginController.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>
出了什么问题?
解决方案
修复模式中的错误:“{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" />
}
推荐阅读
- c - 如何在C中的循环链接列表中插入节点
- reactjs - 在 React 问题中实现 15 分钟超时
- java - 找不到资源:/credentials.json Google Sheets API
- python - Mac OSX CPython ctypes 库功能和正确的文件夹位置
- java - 谁能告诉我 Android Studio 中的这段代码有什么问题?
- python - 如何根据python中的附图对值进行排序
- python - 使用 scikit-image 标记连接的组件时出错
- c - 如何在我的 arduino 项目中正确配置和使用 RTC DS3231?
- python - 在python中将多个概率分布组合成一个分布
- batch-file - 用cmd和批处理中的数字序列重命名多个文件