繁体   English   中英

为什么模式不适用于 cshtml (razor) asp.net?

[英]why does pattern not work for cshtml (razor) asp.net?

这是我的注册页面的 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; }
}

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

您可以将[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

请为带有 asp-for 的剃刀页面使用以下属性

  1. 数据值正则表达式
  2. 数据值正则表达式模式

例子:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM