我正在使用名为 MVC Foolproof Validation 的 MVC Validation nuget 包。
如果另一个模型属性为空,我将在我的模型上使用它来将 required 设置为 true。验证部分有效,因为当 Id 字段和 Location 字段为空时,ModelState 正确设置为无效。检查 ModelState 数组上的错误,我可以看到它的工作。
我的问题是客户端验证摘要不显示。这是我的设置方式。谁能发现我的问题?
[DisplayName("Image Id")]
public string Id{ get; set; }
[DisplayName("Location Id")]
[RequiredIfEmpty("Id", ErrorMessage = "You must..etc"]
public string LocationId{ get; set; }
在我看来,我正在设置验证摘要和输入,如下所示
<div class="form-horizontal">
<hr/>
@Html.ValidationSummary(true, "", new {@class = "text-danger"})
<div class="form-group">
@Html.LabelFor(model => model.SearchCriteria.Id, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.SearchCriteria.Id, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.SearchCriteria.Id, "", new {@class = "text-danger"})
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.SearchCriteria.LocationId, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model => model.SearchCriteria.LocationId, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.SearchCriteria.LocationId,"", new {@class = "text-danger"})
</div>
</div>
在我的控制器操作中,我正在检查模型状态。我需要调用 ModelState.AddModelError(..)。我已经尝试过了,但也许有一种方法我需要调用它。
[HttpPost]
public ActionResult Search(SearchCriteria searchCriteria)
{
var searchViewModel = new SearchViewModel
{
SearchCriteria = searchCriteria
};
if (ModelState.IsValid)
{
...
}
//ModelState.AddModelError("LocationId", "test");
return View(searchViewModel);
}