[英]C# 9 relational pattern in switch expression in ASP.NET Core Razor CSHTML
[英]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]
验证属性与仅允许字母( a
到z
和A
到Z
)字符的正则表达式结合使用。
例子:
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 的剃刀页面使用以下属性
例子:
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.