asp.net-core - 使用 StringLength 验证属性进行模型验证

标签 asp.net-core model-validation

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

    相关文章:

    entity-framework - Entity Framework Core 的反向引擎

    Asp.net 5 MVC 6, 为 facebook 电子邮件添加权限

    javascript - 外部 javascript 文件无法在 .net core MVC 中工作

    c# - ASP.NET Core 验证客户端(控制台/WPF)

    ASP.NET MVC 模型验证违反 MVC 规则?

    amazon-web-services - VS 运行哪些命令来发布 .net core 无服务器应用程序?

    c# - 如何禁用 MVC 4 模型验证?

    c# - MaxLength 属性不生成客户端验证属性

    c# - 使用自定义验证属性进行模型验证

    c# - asp.net core 2.0 模型验证不验证数据