0

ASP.NET MVC客户端验证我下面这篇文章从服务层

http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs

包括业务逻辑服务层在我的ASP.NET MVC Web应用程序。

我可以使用ModelState类将消息从服​​务层传递到Html.ValidationSummary中的查看模型。

我的视图模型执行基本验证逻辑(使用DataAnnotation属性),我已经通过默认设置,其上显示错误消息我的形式的每一个字段启用ClientValidation

来自服务层的业务逻辑错误消息仅在将表单发送到服务器后才会显示在Html.ValidationSummary上。

经过服务层验证后,我想突出显示一个或多个字段,并从服务层发出的消息显示在这些字段上,而不是Html.ValidationSummary

任何想法如何做到这一点?

回答

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> 
} 
+0

感谢达林,你的回答帮了我很多的感谢! – GibboK 2012-07-10 08:03:14

0

由于达林我找到了解决我的问题。

在细节:

我可以使用

_validatonDictionary.AddError("Name of my field", "Custom message") 

这样我就可以显示一条消息,并突出显示特定的字段(DataAnnotation很简单的事情)。

如果我想没有亮点显示的ValidationSummary只是一个消息的特定字段我用

_validatonDictionary.AddError(string.Empty, "Custom message") 

请注意:string.Empty