【发布时间】:2018-05-22 01:23:32
【问题描述】:
我正在尝试在 AspNetCore 2 中进行一些必需的字段验证,但我期望发生的事情并没有发生。
型号
[Required(ErrorMessage = "The game name cannot be blank")]
[StringLength(100,ErrorMessage = "The game name must be between 2 and 100 characters", MinimumLength = 2)]
[Display(Name = "Name")]
public string GameName { get; set; }
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult GameDetail(GameDetail model, IFormCollection form)
{
if (!ModelState.IsValid)
{
return View(model);
}
// code removed for clarity
}
查看
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<form class="form" method="post">
<div class="form-group">
<label class="form-label" asp-for="GameName"></label>
<span asp-validation-for="GameName" class="text-danger"></span>
<input class="form-control" asp-for="GameName" class="form-control" />
</div>
<div class="form-group">
<input class="button" type="submit" value="Continue">
</div>
</form>
在 MVC5 中,如果发布此表单时未输入任何值,则 ModelState 将无效并且将向视图返回错误。
但是,在这种情况下,ModelState.IsValid 为 true,但错误计数为 1,并且错误列表确实显示该字段为错误。
我尝试了一些方法,包括在模型的帖子参数上添加 [Bind("GameName")] 以及模型上的 [BindRequired] 以及这篇帖子:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation
然而,表单提交并重定向到下一页(为清楚起见已删除代码)而没有显示任何错误。
我希望看到返回的视图带有显示所需错误消息的字段错误消息和显示相同错误的错误摘要。
【问题讨论】:
标签: c# validation razor asp.net-core model