我有一个这样的模型:
[IsValidInput]
public class Input
{
//different properties
}
使用如下自定义验证属性:
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class IsValidInput : ValidationAttribute
{
public override bool IsValid(object value)
{
try
{
ExternalValidator.Validate(value);
}
catch (CustomException ex)
{
foreach(var errorText in ex.GetDescriptions())
{
this.ErrorMessage = this.ErrorMessage + errorText;
}
return false;
}
return true;
}
}
现在我有一个包含多个错误的ErrorMessage对象。我想以某种方式返回多个ErrorMessage对象,以便在我的视图中我将有一个包含多个列表项的列表,如下所示:
如何返回ErrorMessages列表以实现此目的?
答案 0 :(得分:0)
查看此解决方案: http://www.codeproject.com/Articles/234096/Multiple-Custom-DataAnnotations-on-Same-Field-With
1)使用静态字段,该字段将跟踪每个字段或属性有多少属性,并根据计数,在为每个字段生成的每个下一个规则的ValidationType中附加字母a,b,c ...田地或财产。
2)提供自定义HTML帮助器来渲染字段的编辑器;然后,HTML Helper将解析该字段上的所有“HTML-5 data-val”属性,并将它们转换为字段所需的多条规则(客户端规则,不会更改服务器端代码上的任何内容)。
3)为客户端验证此自定义验证属性提供两个适配器和验证函数,如果字段上只有一个Attribute实例(即RequiredIf),则为另一个,当有多个Attribute实例时在场上(即RequiredIfMultiple)。
答案 1 :(得分:0)
您好,您可以返回简单的ValidationResult类而不是boolean:
chrome
答案 2 :(得分:0)
我找到了解决方法:
我会在错误信息中添加一些像这样的html标签:
foreach(var errorText in ex.GetDescriptions())
{
this.ErrorMessage = this.ErrorMessage + txt + @"</li><li>";
}
this.ErrorMessage = this.ErrorMessage.Remove(this.ErrorMessage.Length - 4);
在我的视图中添加@ Html.Raw:
@if (Html.ValidationSummary() != null) { @Html.Raw(HttpUtility.HtmlDecode(Html.ValidationSummary().ToString())); }
这会给我带有我想要的验证结果的html列表。