0

是否可以在代码中设置范围(或任何其他模型DataAnnotations属性)并保留所有DataAnnotations行为?

即我有一个十进制模型,我想以我可以继续使用的方式在代码中设置它的最小值(例如在页面加载时)ValidationMessageFor

我目前的“静态”模型

[Required]
[DisplayName("Price")]
[RegularExpression(@"[0-9]+(\.[0-9][0-9]?)?$", ErrorMessage = "Invalid price format")]
public decimal MinimumPrice { get; set; }

谢谢!

4

2 回答 2

0

您可以使用 Fluent API 实现一些您想要的功能:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeClass>()
        .Property(x => x.MinimumPrice )
            .IsRequired()
            .HasColumnType("decimal")
            .HasPrecision(18, 2);     
            // default vals for decimal type. 18 = precision = how many digits in 
            // total. 2 = scale = digits after decimal                   
}

对于某些事情,最好使用流利的配置,而其他事情则使用注释。

进一步阅读

于 2013-05-16T23:18:41.187 回答
0

不,DataAnnotations 在编译时编译到代码中,并且不能在运行时更改。

如果你坚持使用DataAnnotations,那真的没有别的选择了。

如果您愿意做其他事情,那么您还有许多其他选择。您可以创建自己的 Attribute 来从您选择的变量中读取值(尽管您不能将变量传递给它)。

或者你可以使用 FluentValidation。

于 2013-05-17T00:33:31.157 回答