在我的ASP.NET MVC Core 1.1.1中,我有一个带有一个输入的表单,如下所示,用户需要输入区号作为两个字符,如01,02,...,10,11等。但是当我通过输入区域代码(例如123)提交表单时,它仍然成功提交表单而不强制用户输入区号作为两个字符。我可能缺少什么?
MyViewModels
...
[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 Application
模板和最新版本的VS2017,默认情况下,当使用这样的模板时,安装必要的Bootstrap和其他javascripts。
答案 0 :(得分:0)
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") }
<强>控制器强>
[HttpPost]
public IActionResult Contact(MyViewModel model)
{
if (ModelState.IsValid)
{ ... }