我正在使用实体框架6,.Net框架4和代码。
我可以使用GetValidationResult
方法获取验证错误。但我无法显示如下图所示的验证消息。怎么做到这一点?
我的代码:
<Label Content="Name" />
<Grid Grid.Row="0" Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox x:Name="txtName"
Width="200"
Margin="8,0,0,0"
MaxLength="150"
Text="{Binding Path=dfc_Name,
ValidatesOnDataErrors=True}" />
</Grid>
<Label Grid.Row="4"
Grid.Column="0"
Content="Description" />
<TextBox x:Name="txtDescription"
Grid.Row="4"
Grid.Column="2"
Width="300"
Height="80"
Margin="8,0,0,0"
HorizontalAlignment="Left"
VerticalContentAlignment="Top"
AcceptsReturn="True"
Text="{Binding Path=dfc_Description,
ValidatesOnDataErrors=True}"
TextWrapping="WrapWithOverflow" />
</Grid>
代码背后:
private readonly Item OItem = new Item();
public ItemView()
{
InitializeComponent();
this.DataContext = OItem;
if (context.Entry(OItem).GetValidationResult().IsValid)
{
}
else
{
}
}
答案 0 :(得分:4)
你应该先装饰你的代码POCO类。
这看起来像:
[StringLength(25, ErrorMessage = "Blogger Name must be less than 25 characters", MinimumLength = 1)]
[Required]
public string BloggerName{ get; set; }
然后,您可以使用如下扩展方法获取特定错误:
public static List<System.ComponentModel.DataAnnotations.ValidationResult> GetModelErrors(this object entity)
{
var errorList= new List<System.ComponentModel.DataAnnotations.ValidationResult>();
System.ComponentModel.DataAnnotations.Validator.TryValidateObject(entity, new ValidationContext(entity,null,null), errorList);
return errorList.Count != 0 ? errorList: null;
}
然后,您可以使用列表作为属性来填充视图中的验证模板。在您的示例中,这可能发生在“保存”点击事件中。