2011-10-24 15 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を挿入するとString.Emptyにエラーを設定NameTypeフィールドi番目の「名前のフィールドが必要とされ、」表示され、「Typeフィールドが必要です」。

必要な行動: スキップ検証を必要とNameまたはTypeフィールドが空の場合、サーバーからValidationExceptionを投げます。

注:Silverlight、EF、WCF RIA、MVVM。

+1

検証例外自体を投げたければ、とにかくサーバーからそれをやりたいのですが、サーバーからの往復を節約するために、wcf Riaサービスで簡単にできました。 –

+0

@AkashKava、そうですが、文脈の中でいくつかの複雑なチェックをする必要があります。 –

答えて

28

このために、あなたが通過するプロパティで

[Required(AllowEmptyStrings=true)] 

を設定することができます。

+1

ありがとうございます!助けになる。 –

関連する問題