这是我的注册页面的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,我都会从输入模型中收到一条错误消息,但是,名称中不能包含任何特殊字符或数字,该怎么办?预先感谢!
答案 0 :(得分:0)
您可以将[RegularExpression]
验证属性与正则表达式一起使用,仅允许使用字母(a
至z
和A
至Z
)个字符。< / 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 页面使用以下属性
示例:
data-val-regex="Phone/Mobile number must be 10 digits." data-val-regex-pattern="^(?:.*[0-9]){10,}$"