3

我使用 Database-First 生成模型类(EDMX 文件),并且我想使用“MetadataType”进行验证。我在这里阅读了解决方案,但它们对我不起作用。

这是我的代码:

[MetadataType(typeof(MovieEntitiesMetaData))]
public partial class MovieEntities
{        
}

public class MovieEntitiesMetaData
{
    [DisplayFormat(DataFormatString = "{0:c}")]
    public Nullable<global::System.Decimal> PRICE { get; set; }
}

这里有什么遗漏吗,或者为什么我的解决方案不起作用?

4

1 回答 1

1

创建一个名为的新文件MoviePartial.cs并将以下代码放入其中:

[MetadataType(typeof(MovieMetaData))]
public partial class Movie
{    
    internal sealed class MovieMetaData
    {
        [DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
        [Required(ErrorMessage = "Price is required")]
        public decimal? PRICE { get; set; }
    }
}

您还需要将Movie类型传递给视图,以便可以连接数据注释。如果您有自定义视图模型,则数据注释将不会生效。

在创建/编辑视图中,您必须拥有:

@Html.EditorFor(m => m.PRICE)

在详细信息视图中,您必须具有:

@Html.DisplayFor(m => m.PRICE)

有关这方面的更多信息,请按照这个不错的分步教程进行操作:

使用数据注释验证器进行验证 (C#)

于 2012-10-06T04:34:18.520 回答