【问题标题】:How do I change an .net Core Validator error message using javascript?如何使用 javascript 更改 .net Core Validator 错误消息?
【发布时间】:2021-05-20 15:28:37
【问题描述】:

我已经有一个必填字段,例如:

    [Required(AllowEmptyStrings = false, ErrorMessage = "Fixed error message that I don't want")]
    [BindProperty]
    public string UserName { get; set; }

并正确添加了所需的所有验证代码,一切正常。

但是,我正在将旧的 asp.net 框架移植到 .net 核心,并且系统用于在 asp:RequiredFieldValidator 上使用 javascript 设置错误消息

$("#RequiredFieldValidatorUsername")[0].errormessage = 'some error message';

我找不到一种简单的方法来通过任何地方的 javascript 从必需模型字段设置错误消息(我已经在客户端有字符串)。

有没有办法做到这一点?

例如: 模型类:

public class LoginModel : PageModel
{
public string HeaderScript { get; private set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Please enter the name")]
[BindProperty]
public string UserName { get; set; }
}

观点:

<input ID="TextBoxUserName" asp-for="UserName" />
<span asp-validation-for="UserName" class="text-danger"></span>

我已经有一个带有我想在错误消息中使用的字符串的 Javscript,我只需要设置它而不是模型中的那个。

【问题讨论】:

  • 由于它们在完全不同的时间运行,一个服务器端,一个用户端,您可能需要使用 fetch (JS -> .NET)。跨度>
  • 我已经有了用户端的字符串,我只想更改显示的内容,这意味着我不需要在 .cs 模型代码上设置 ErrorMessage ,我只需要通过 javascript 设置它。我不确定 fetch 如何做到这一点。
  • JS不能直接和cs模型交互。它必须通过网络请求传播。所以需要fetch 或类似的。
  • 我不想或不需要交互,我已经在客户端有字符串,验证已经工作(客户端和服务器端都使用 jquery.validate),我只想设置一个不同的javascript错误消息而不是在模型上设置它。
  • 那么请您编辑问题并包含minimal reproducible example?目前很难辨别问题。

标签: javascript validation asp.net-core


【解决方案1】:

这行得通,但我不确定它是否有任何缺点......

$('#TextBoxUserName').attr('data-val-required', 'my new error message'); 
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('body');

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 2016-12-22
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2019-12-25
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多