Ana*_*uza 10 c# validation silverlight entity-framework mvvm
问题:
在EntityCollectionView中添加新项目时,会为字符串字段引发所需的验证,但出于我的目的,我们应该在服务器端验证后显示它.
实际行为:
这是来自元数据文件的代码:
[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; }
}
}
Run Code Online (Sandbox Code Playgroud)
这个项目的集合绑定到DataGridxaml:
<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>
Run Code Online (Sandbox Code Playgroud)
如您所见,没有[Required]字段的属性,但是当插入新项目Name并且Type字段设置为String.Empty错误"名称字段是必需的"和 "需要类型字段"时出现.
所需的任务:
跳过要求的验证和扔ValidationException从服务器时Name或Type字段为空.
注意:Silverlight,EF,WCF RIA,MVVM.
Aka*_*ava 28
为此您可以设置
[Required(AllowEmptyStrings=true)]
Run Code Online (Sandbox Code Playgroud)
在您想要传递的属性上.