【问题标题】:Model Validation using StringLength validation attribute使用 StringLength 验证属性的模型验证
【发布时间】:2017-08-30 10:56:36
【问题描述】:

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

注意 我正在使用带有最新版本 VS2017 的默认 ASP.NET Core Web Application 模板,当使用此类模板时,默认情况下会安装必要的 Bootstrap 和其他 javascript。

【问题讨论】:

  • 您是否添加了客户端javascript进行验证?尝试检查,在服务器(操作)中 ModelState 是否有效,如果无效检查原因是否是 Dist 属性,如果它说它无效,发生的情况是您没有在客户端验证(javascript)跨度>
  • @dime2lo 我在上面的帖子中添加了一个 NOTE 来回答您的问题,其他读者可能也有。
  • 您是否检查过模型是如何到达服务器的(如果 ModelState 有效)?如果它应该是无效的,那么问题出在客户端。也许我错了,但您必须添加 javascript 客户端验证部分。 @section Scripts { @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } }
  • 如何注册 MVC 中间件(.AddMvc.AddMvcCore)。我问的是因为应该注册 MVC 数据注释服务,并且这仅使用 AddMVC 自动完成,否则您需要直接调用 AddMvcCore().AddDataAnnotations()。见stackoverflow.com/q/44979691/2833802
  • @Set ConfigureServices(...) in StartUp.csAddMvc(); 在里面。

标签: asp.net-core model-validation


【解决方案1】:

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. 缺少必需的属性!

查看

验证脚本:

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

控制器

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

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多