0
在我的ASP.NET MVC Core 1.1.1中,我有一个输入如下所示的表单,其中用户需要输入区号作为两个字符,如01,02 ... 10,11等。但是,当我通过输入地区代码(例如123)提交表单时,它仍然成功提交表单,而不强制用户输入区码作为两个字符。我可能错过了什么?使用StringLength验证属性进行模型验证
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的最新版本的默认安装必要的引导和其他的JavaScript当一个使用这样的模板。
你有添加验证客户端的JavaScript?尝试检查,在服务器(行动)是ModelState是有效的,如果无效检查,如果原因是Dist属性,如果它说无效会发生什么,你是不是在客户端验证(javascript) – dime2lo
@ dime2lo我在上面的帖子中添加了一个** NOTE **来回答你的问题,其他读者也可能有这样的问题。 – nam
您是否检查过模型是如何到达服务器的(如果ModelState有效)?如果它是无效的,那么问题出现在客户端。也许我错了,但你必须添加部分的JavaScript客户端验证。 '@section Scripts {} {await Html.RenderPartialAsync(“_ ValidationScriptsPartial”); } }' – dime2lo