【问题标题】:ASP.NET MVC client validation from Service Layer来自服务层的 ASP.NET MVC 客户端验证
【发布时间】:2012-07-09 05:00:33
【问题描述】:
【问题讨论】:
标签:
asp.net-mvc
validation
model-view-controller
service-layer
【解决方案1】:
感谢达林,我找到了解决问题的方法。
详细说明:
我可以使用
_validatonDictionary.AddError("Name of my field", "Custom message")
这样我就可以显示一条消息并突出显示该特定字段(使用 DataAnnotation 非常简单)。
如果我只想在 ValidationSummary 中显示一条消息而不突出显示我使用的特定字段
_validatonDictionary.AddError(string.Empty, "Custom message")
请注意string.Empty
【解决方案2】:
这是验证在服务器上的外观:
protected bool ValidateProduct(Product productToValidate)
{
if (string.IsNullOrEmpty(productToValidate.Name))
_validatonDictionary.AddError("Name", "Name is required.");
if (string.IsNullOrEmpty(productToValidate.Description))
_validatonDictionary.AddError("Description", "Description is required.");
if (productToValidate.UnitsInStock < 0)
_validatonDictionary.AddError("UnitsInStock", "Units in stock cannot be less than zero.");
return _validatonDictionary.IsValid;
}
您所要做的就是为视图中的这些字段设置相应的ValidationMessageFor 帮助器,并且来自服务器的错误消息将关联到相应的字段:
@using (Html.BeginForm())
{
<div>
@Html.LabelFor(x => x.Name)
@Html.EditorFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)
</div>
<div>
@Html.LabelFor(x => x.Description)
@Html.EditorFor(x => x.Description)
@Html.ValidationMessageFor(x => x.Description)
</div>
<button type="submit">Create</button>
}