2011-10-24 86 views
10

问题:

当添加新项EntityCollectionView提出字符串字段所需的验证,但我的目的,我们应该在服务器端验证后证明这一点。

实际行为:

下面是从元数据文件代码:EF。字符串字段必填验证错误,提高无[必需]属性

[MetadataTypeAttribute(typeof(SomeEntityMetadata))] 
public partial class SomeEntity 
{ 
    [EntityName] 
    internal sealed class SomeEntityMetadata 
    { 
     private SomeEntityMetadata() 
     { 
     } 

     public long Id { get; set; } 

     [EntityName(Name = "Name", OrderIndex = 2)] 
     public string Name { get; set; } 

     [EntityName(Name = "Data Type", OrderIndex = 1)] 
     public string Type { get; set; } 

    } 
} 

而在XAML绑定到DataGrid这个项目的集合:

<navigation:DataGridTemplateColumn CanUserReorder="True" 
            CanUserSort="True" 
            Header="Name" 
            SortMemberPath="Name"> 
    <navigation:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock VerticalAlignment="Center" Text="{Binding Name}"/> 
     </DataTemplate> 
    </navigation:DataGridTemplateColumn.CellTemplate> 
    <navigation:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding Name, Mode=TwoWay}" Height="Auto"/> 
     </DataTemplate> 
    </navigation:DataGridTemplateColumn.CellEditingTemplate> 
</navigation:DataGridTemplateColumn> 
<navigation:DataGridTemplateColumn CanUserFilter="True" 
             CanUserSort="True" 
             Header="Type" 
             SortMemberPath="Type"> 
    <navigation:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock VerticalAlignment="Center" Text="{Binding Type}" /> 
     </DataTemplate> 
    </navigation:DataGridTemplateColumn.CellTemplate> 
    <navigation:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <ComboBox ItemsSource="{Binding DataTypes, Source={StaticResource entityViewModel}}" SelectedItem="{Binding Type, Mode=TwoWay}/> 
     </DataTemplate> 
    </navigation:DataGridTemplateColumn.CellEditingTemplate> 
</navigation:DataGridTemplateColumn> 

正如你看到的字段没有[Required]属性,但是当插入新项目w时ith NameType字段设置为String.Empty错误“名称字段为必填”“类型字段为必填”出现。

所需的任务: 跳过要求的验证和从服务器抛出ValidationExceptionNameType字段为空。

注意:Silverlight,EF,WCF RIA,MVVM。

+1

如果你想抛出验证异常本身,那么为什么你想从服务器做到这一点,为了节省从服务器的往返旅程,通过wcf Ria服务使得它更容易。 –

+0

@AkashKava,你是对的,但我需要在上下文中做一些复杂的检查。 –

回答

28

为此,您可以设置

[Required(AllowEmptyStrings=true)] 

在要通过性能。

+1

谢谢!它有助于。 –