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.
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. –
@AkashKava, masz rację, ale potrzebuję wykonać pewne skomplikowane sprawdzanie w kontekście. –