gpt4 book ai didi

asp.net - 为什么 MetadataType 不在数据库优先方法中进行验证?

转载 作者:行者123 更新时间:2023-12-02 03:55:44 27 4
gpt4 key购买 nike

我使用 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; }
}

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

最佳答案

创建一个名为 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 类型传递给 View ,以便连接数据注释。如果您有自定义 View 模型,数据注释将不会起作用。

在创建/编辑 View 中,您必须:

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

在详细信息 View 中,您必须:

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

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

Validation with the Data Annotation Validators (C#)

关于asp.net - 为什么 MetadataType 不在数据库优先方法中进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12756721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com