【问题标题】:Validating Data Annotation using Jquery, not displaying the error message使用 Jquery 验证数据注释,不显示错误消息
【发布时间】:2023-03-27 09:40:01
【问题描述】:

我有一个模型属性,根据另一个属性的值,视图上可能需要或不需要其值。我在视图中实现了如下。

<input @Html.Raw(Model.IsRequired ? "required data-val=true' data-val-required='" + Model.Name + " selection is required.'" : "") asp-for="Name" class="form-control" />
if (Model.IsRequired)
{
    <span asp-validation-for="Name" class="text-danger"></span>
}

根据必填字段值指示,应用或不应用验证。

我还必须添加这段代码。

$("#btnSubmit").on("click", function () {
    $("#form").submit();
});

代码在验证代码时工作正常,但没有显示消息。我错过了什么?

我也尝试使用this answer 并将我的验证范围更改为如下,但它也不起作用。

<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>

【问题讨论】:

  • 您不需要添加这些属性。当您使用 asp-for 时,它们由标签助手添加。
  • @ChrisPratt 我没有在服务器端添加必需的验证;那它还能用吗?
  • @ChrisPratt 删除视图上的所有属性和 asp-for 仍然不显示消息。

标签: c# jquery asp.net-core data-annotations


【解决方案1】:

如果您不想添加数据注释进行验证。这是一个简单的解决方法,如下所示:

1.型号:

public class TestModel
{
    public string Name { get; set; }
    public bool IsRequired { get; set; }
}

2.查看(您需要更改您的@Html.Raw()并确保您已添加@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}):

@model TestModel
<form id="form">
    <input @Html.Raw(Model.IsRequired ? "data-val='true' data-val-required='selection is required.'" : "") id="Name" name="Name" type="text" class="input-validation-error" />
    @if (Model.IsRequired)
    {
        <span asp-validation-for="Name" class="text-danger"></span>
    }

    <input id="btnSubmit" type="submit" />
</form>

@section Scripts{
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

3.控制器:

public IActionResult Index()
{
    var test = new TestModel() { IsRequired = true };
    return View(test);
}

4.结果:

【讨论】:

  • 感谢您的回答。这按要求工作。但是,您可能需要删除 class="input-validation-error"。似乎已经加载了带有红色边框的屏幕,而不是在单击按钮时加载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
相关资源
最近更新 更多