c# - 英孚。在没有 [Required] 属性的情况下引发字符串字段的必需验证错误

标签 c# silverlight entity-framework validation 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; }

    }
}

并将此项目的集合绑定(bind)到 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] 属性,但是插入新项目时NameType 字段设置为String.Empty 出现错误 “Name field is required”“Type field is required”

需要的行为:NameType 字段为空时,跳过必需的验证并从服务器抛出 ValidationException

注意:Silverlight、EF、WCF RIA、MVVM。

最佳答案

为此你可以设置

 [Required(AllowEmptyStrings=true)]

关于要传递的属性。

关于c# - 英孚。在没有 [Required] 属性的情况下引发字符串字段的必需验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875666/

相关文章:

c# - 使用 Entity Framework 将 bool 属性映射到 Oracle

c# - 如何拆分/切片图像给每个图像 ID 以保存在数据库 C#

c# - 断言比较两个对象列表 C#

c# - 帮我命名这个属性 (C#)

c# - 在 windows phone 8.1 中,Windows phone 项目和 silverlight 项目有什么区别?

.net - Entity Framework 查询 - 按特定顺序获取对象

entity-framework - Code First 现有数据库 vs EF Designer 到现有数据库

c# - 重复调用HashCode.Combine

c# - C#中对象的碰撞检测

c# - 无法通过反射访问内部属性