在我的 ASP.NET MVC Core 1.1.1 中,我有一个包含一个输入的表单,如下所示,其中要求用户输入两个字符的地区代码,例如 01、02、...10,11 等。但是,当我通过输入区号(例如 123)来提交表单时,它仍然成功提交表单,而不会强制用户输入两个字符的区号。我可能缺少什么?
MyViewModel
...
[Display(Name = "District"),StringLength(2)]
public string Dist { get; set; }
...
表单
@model MyProj.Models.MyViewModel
...
<div class="form-group">
<label asp-for="Dist" class="col-md-2 control-label"></label>
<div class="col-md-2">
<input asp-for="Dist" class="form-control" />
<span asp-validation-for="Dist" class="text-danger"></span>
</div>
<div class="col-sm-pull-8">01 to 53 — district codes</div>
</div>
...
注意 我正在使用默认的 ASP.NET Core Web 应用程序模板和最新版本的 VS2017,当使用此类模板时,默认情况下会安装必要的 Bootstrap 和其他 javascript。
最佳答案
1 - StringLength 的第一个参数是最大长度。要定义最小值,您可以执行以下操作:
[Display(Name = "District")]
[Required]
[StringLength(2, MinimumLength = 2)]
public string Dist { get; set; }
或者:
[Display(Name = "District")]
[Required]
[MinLength(2)]
[MaxLength(3)]
public string Dist { get; set; }
- 缺少必需属性!
查看
验证脚本:
@section Scripts { @Html.Partial("_ValidationScriptsPartial") }
Controller
[HttpPost]
public IActionResult Contact(MyViewModel model)
{
if (ModelState.IsValid)
{ ... }
关于asp.net-core - 使用 StringLength 验证属性进行模型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45927919/