2011-10-24 14 views
10

Problem:

Podczas dodawania nowego elementu do EntityCollectionView podniósł wymagane sprawdzanie poprawności dla pola smyczkowych, ale dla mojego celu powinniśmy pokazać go po walidacji po stronie serwera.

Rzeczywiste zachowanie:

Oto kod z pliku metadanych:EF. Wymagane błąd sprawdzania poprawności dla pola smyczkowych podnieść bez [Wymagane] przypisują

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

    } 
} 

oraz zbiór tych elementów zbindowanych do DataGrid w XAML:

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

Jak widać nie ma atrybutów [Required] dla pól, ale podczas wstawiania nowego elementu w î Name ipola ustawione na String.Empty błędy "Pole nazwy jest wymagane" i "Pole typu jest wymagane" pojawia się.

Szacowany zachowanie: Pomiń wymaga walidacji i rzucać ValidationException z serwerem podczas Name lub Type pola są puste.

UWAGA: Silverlight, EF, WCF RIA, MVVM.

+1

Jeśli chcesz sam rzucić wyjątek sprawdzania poprawności, to dlaczego chcesz to zrobić z serwera, aby zaoszczędzić na obiedzie z serwera, ułatwiły to usługi wcf Ria. –

+0

@AkashKava, masz rację, ale potrzebuję wykonać pewne skomplikowane sprawdzanie w kontekście. –

Odpowiedz

28

Do tego można ustawić

[Required(AllowEmptyStrings=true)] 

na właściwości chcesz przejść.

+1

Dziękujemy! To pomaga. –

Powiązane problemy