1

我首先使用实体​​框架 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
    {

    }
}
4

1 回答 1

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;
}

然后,您可以使用该列表作为属性在您的视图中填充验证模板。在您的示例中,这可能发生在“保存”点击事件中。

于 2013-10-03T22:31:19.060 回答