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

时间:2018-10-02 12:19:25

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

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

这是InputModel:

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,我都会从输入模型中收到一条错误消息,但是,名称中不能包含任何特殊字符或数字,该怎么办?预先感谢!

2 个答案:

答案 0 :(得分:0)

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

示例:

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 :(得分:0)

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

  1. data-val-regex
  2. data-val-regex-pattern

示例:

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