2011-10-24 91 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

謝謝!它有助於。 –