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

ASP.NET MVC与Web API登录错误参数无警告问题求助

解决登录错误提示不显示的问题

问题分析

你的代码存在两个核心问题导致错误提示无法正常展示:

  1. 视图中错误存在性的判断逻辑错误,依赖检查空键是否存在而非直接判断ModelState是否包含错误
  2. ValidationSummary的参数配置不正确,无法正确渲染全局错误信息

修复步骤

1. 修改视图中的错误显示逻辑

将登录表单内的错误判断代码替换为以下内容,直接通过ModelState.IsValid判断是否存在错误,并调整ValidationSummary参数确保全局错误正常显示:

@if (!ModelState.IsValid)
{
    <div class="alert alert-danger mt-3" role="alert">
        @Html.ValidationSummary(false, null, new { @class = "text-danger mb-0" })
    </div>
}
  • ValidationSummary第一个参数设为false,表示同时显示属性级和全局级错误;若只想显示你添加的全局错误,可设为true
  • 移除多余的空字符串参数,避免干扰错误渲染逻辑

2. 启用客户端验证(可选但推荐)

若需要实现客户端实时验证,在Scripts区域添加验证脚本引用:

@section Scripts {
    <script src="~/Scripts/jquery.validate.min.js"></script>
    <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    <script>
        $(document).ready(function () {
            $('#toggleToken').click(function () {
                $('#tokenContent').slideToggle();
            });
        });
    </script>
}

3. 控制器代码优化(可选)

在API返回失败的分支中,显式添加return View(model);让逻辑更清晰(原代码可正常运行,但显式返回更易维护):

else
{
    ModelState.AddModelError("", "Kullanıcı adı veya şifre hatalı.");
    ViewData["ErrorMessage"] = "Kullanıcı adı veya şifre hatalı.";
    return View(model);
}

修改后的完整视图错误显示片段

@using (Html.BeginForm("Login", "Account", FormMethod.Post))
{
    <div class="form-group">
        @Html.LabelFor(m => m.ADI)
        @Html.TextBoxFor(m => m.ADI, new { @class = "form-control" })
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.SOYADI)
        @Html.TextBoxFor(m => m.SOYADI, new { @class = "form-control" })
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.KULLANICI_ADI)
        @Html.TextBoxFor(m => m.KULLANICI_ADI, new { @class = "form-control" })
    </div>
    <div class="form-group">
        @Html.LabelFor(m => m.SIFRE)
        @Html.PasswordFor(m => m.SIFRE, new { @class = "form-control" })
    </div>
    <button type="submit" class="btn btn-primary">Login</button>

    @* 修改后的错误显示区域 *@
    @if (!ModelState.IsValid)
    {
        <div class="alert alert-danger mt-3" role="alert">
            @Html.ValidationSummary(false, null, new { @class = "text-danger mb-0" })
        </div>
    }
}

内容的提问来源于stack exchange,提问作者Göksu Ünsal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:45:09