You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core登录页:如何在账号密码错误时显示错误提示?

登录页面错误提示实现方案

步骤1:在Controller中添加错误信息

修改AccountController的[HttpPost] Login方法,在用户名不存在或密码错误时,通过ModelState注入错误提示,并返回带用户输入模型的View(保留已输入的用户名,避免重复输入):

[HttpPost]
public IActionResult Login(ManagerAccount m)
{
    var getUser = db.ManagerAccounts.SingleOrDefault(i => i.Username == m.Username);
    if (getUser != null)
    {
        if (getUser.Password == m.Password)
        {
            return View("~/Views/Home/Index.cshtml");
        }
        else
        {
            ModelState.AddModelError(string.Empty, "用户名或密码错误");
            return View(m);
        }
    }
    else
    {
        ModelState.AddModelError(string.Empty, "用户名或密码错误");
        return View(m);
    }
}

注:为避免泄露账号存在性信息,建议统一使用“用户名或密码错误”的提示;如果需要区分具体错误,可以分别添加字段级提示,比如ModelState.AddModelError("Password", "密码不正确")。

步骤2:在Login视图中展示错误信息

修改Login.cshtml,在表单上方添加验证摘要组件,用于渲染错误提示:

@model ESchool.Models.ManagerAccount
@{
    ViewData["Title"] = "Sign in";
}
<div class="p-3 mb-2 bg-dark text-white">Ad</div>
<div class="card">
    <article class="card-body">
        <h4 class="card-title mb-4 mt-1">Sign in</h4>
        <!-- 全局错误提示 -->
        @Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })
        <form action="/Account/Login" method="post">
            <div class="form-group">
                <label>Username:</label>
                @Html.TextBoxFor(m => m.Username, new { @class = "form-control" })
                <!-- 可选:用户名字段单独错误提示 -->
                @Html.ValidationMessageFor(m => m.Username, "", new { @class = "text-danger" })
            </div>
            <div class="form-group">
                <label>Password:</label>
                <!-- 优化:将密码输入框设为password类型,隐藏明文 -->
                @Html.TextBoxFor(m => m.Password, new { @class = "form-control", type = "password" })
                <!-- 可选:密码字段单独错误提示 -->
                @Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" })
            </div>
            <div class="form-group">
                <button type="submit" class="btn btn-primary btn-block">Login</button>
            </div>
        </form>
    </article>
</div>

补充说明

  • ModelState.AddModelError第一个参数传string.Empty时,错误会显示在全局的ValidationSummary中;指定字段名(如"Username"),则可以通过ValidationMessageFor针对单个字段展示错误。
  • 返回View(m)而非View("Login"),可以保留用户已输入的表单数据,提升登录体验。

内容的提问来源于stack exchange,提问作者Emir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:35:15