【问题标题】:why does pattern not work for cshtml (razor) asp.net?为什么模式不适用于 cshtml (razor) asp.net?
【发布时间】:2021-02-01 02:44:19
【问题描述】:

这是我注册页面的cshtml代码:

<div class="form-group">
    <label asp-for="Input.Name"></label>
    <input asp-for="Input.Name" class="form-control" pattern="[A-Za-z{3}]" />
    <span asp-validation-for="Input.Name" class="text-danger"></span>
</div>

这是输入模型:

public class InputModel
{
    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 3)]
    [DataType(DataType.Text)]
    [Display(Name = "Name")]
    public string Name { get; set; }
}

每当我提交时,如果长度为 50,我确实会从输入模型中收到错误消息,但是,名称不允许包含任何特殊字符或数字,我该怎么做?提前致谢!

【问题讨论】:

  • 是否需要匹配带有 à、è、ì、ò、ù 等重音符号的字母?
  • 您可能需要如下模式:[A-Za-z]{3,50}
  • 既然你已经解决了,我确实需要允许这样的口音。

标签: c# razor asp.net-core asp.net-core-mvc


【解决方案1】:

您可以将 [RegularExpression] 验证属性与仅允许字母(azAZ)字符的正则表达式一起使用。

例子:

public class InputModel
{
    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 3)]
    [DataType(DataType.Text)]
    [Display(Name = "Name")]
    [RegularExpression(@"^[a-zA-Z]+$", "Please only enter letters")]
    public string Name { get; set; }
}

但如果你真的想在输入中使用 HTML pattern 属性,你的模式就犯了一个小错误:

<input asp-for="Input.Name" class="form-control" pattern="[A-Za-z{3}]" />

应该是:

<input asp-for="Input.Name" class="form-control" pattern="[A-Za-z]{3}" />

注意{3} 所在位置的细微差别(方括号之外)。有关详细信息,请参阅此文档:https://www.w3schools.com/tags/att_input_pattern.asp

【讨论】:

  • 非常感谢!我设法实现了我所需要的,但是正则表达式只需要 1 个参数,现在我确实收到一条内置错误消息,指出:“字段名称必须匹配正则表达式 '[A-Za-z]'。” ,但是添加 'ErrorMessage = "Please only enter letters"' 似乎确实有效。 - Dank u zeer!
  • 不客气。如果你试试[RegularExpression(@"pattern", ErrorMessage = "Please only enter letters")]
  • 是的,这很好用!我会试着弄清楚自己如何允许像Ê这样的口音。
【解决方案2】:

对于带有 asp-for 的 razor 页面,请使用以下属性

  1. 数据-val-正则表达式
  2. data-val-regex-pattern

例子:

data-val-regex="Phone/Mobile number must be 10 digits." data-val-regex-pattern="^(?:.*[0-9]){10,}$"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2020-06-06
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    相关资源
    最近更新 更多