使用StringLength验证属性进行模型验证

时间:2017-08-28 22:02:06

标签: asp.net-core model-validation

在我的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。

1 个答案:

答案 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; }
  1. 缺少必需属性!
  2. 查看

    验证脚本:

    @section Scripts { @Html.Partial("_ValidationScriptsPartial") }
    

    <强>控制器

    [HttpPost]
        public IActionResult Contact(MyViewModel model)
        {
            if (ModelState.IsValid)
            { ... }