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

ASP.NET Core 7.0客户端验证失效问题求助

ASP.NET Core 7.0 客户端验证失效问题解决

你的问题核心出在两个关键错误上:手动覆盖输入框的name属性,以及缺少表单包裹元素,导致验证框架无法关联模型规则和触发验证逻辑。

问题分析与修复步骤:

  • 移除手动设置的id和name属性
    asp-for标签助手会自动生成与模型属性完全匹配的id和name值(比如TestNumber对应name="TestNumber"),这是客户端验证框架识别属性验证规则的核心依据。你手动设置的name="testn"、name="tests"和模型属性名不匹配,直接导致验证规则无法绑定到对应的输入框。

  • 用<form>标签包裹所有输入元素
    ASP.NET Core的非侵入式验证要求输入控件必须处于表单内,才能正常监听输入行为并触发验证。你当前的代码没有表单容器,验证脚本无法工作。

  • 验证脚本引入确认
    确保_ValidationScriptsPartial.cshtml中包含以下两个必要脚本:

    <script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
    

    同时要确认_Layout.cshtml中已提前引入jQuery核心库,因为验证脚本依赖它运行。

修正后的完整页面代码:

@page
@model PrivacyModel
@{
    ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>

<p>Use this page to detail your site's privacy policy.</p>

<form method="post">
    <label asp-for="TestNumber">Enter number</label>
    <input type="text" asp-for="TestNumber" />
    <span asp-validation-for="TestNumber"></span>

    <br /><br />

    <label asp-for="TestString">Enter string</label>
    <input type="text" asp-for="TestString" />
    <span asp-validation-for="TestString"></span>

    <br /><br />

    <button type="submit">Submit</button>
</form>

@section Scripts{
    <partial name="_ValidationScriptsPartial" />
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:50:03