問題:
當添加新項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 Name
和Type
字段設置爲String.Empty
錯誤「名稱字段爲必填」和「類型字段爲必填」出現。
所需的任務: 跳過要求的驗證和從服務器拋出ValidationException
時Name
或Type
字段爲空。
注意:Silverlight,EF,WCF RIA,MVVM。
如果你想拋出驗證異常本身,那麼爲什麼你想從服務器做到這一點,爲了節省從服務器的往返旅程,通過wcf Ria服務使得它更容易。 –
@AkashKava,你是對的,但我需要在上下文中做一些複雜的檢查。 –