C# DataTypeAttribute显示了错误的消息

C# DataTypeAttribute显示了错误的消息,c#,asp.net-mvc,asp.net-mvc-3,data-annotations,C#,Asp.net Mvc,Asp.net Mvc 3,Data Annotations,我创建以下属性: public class SpecificDataTypeAttribute : DataTypeAttribute { public SpecificDataType(DataType dataType, string field) : base(dataType) { this.ErrorMessage = string.Format("{0} {1}", field, Messages.SpecificDataTypeAtt

我创建以下属性:

public class SpecificDataTypeAttribute : DataTypeAttribute
{
    public SpecificDataType(DataType dataType, string field)
        : base(dataType)
    {
        this.ErrorMessage = string.Format("{0} {1}", field, Messages.SpecificDataTypeAttribute);
    }
}
并使用类似于:

[SpecificDataType(DataType.DateTime, "Initial date")]
public DateTime? InitialDate { get; set; }

因此,
Messages.SpecificDataTypeAttribute
中的消息
“格式不正确。”
。当我在InitialDate中输入错误的日期时,我得到了默认错误:
“值'12'对InitialDate无效。”
。为什么?我放置了断点,代码正在调用SpecificDataType

您走错了方向-在asp.net mvc中,
DataTypeAttribute
没有定义验证规则。它或多或少类似于-有助于指定在编辑或显示模式下渲染属性时要使用的模板

查看以了解有关为系统类型自定义验证消息的信息

PropertyValueInvalid
的值已格式化,{0}替换为无效值,{1}替换为属性名。所以你可以把它定义为

{1} 格式无效


您走错了方向-在asp.net mvc中,
DataTypeAttribute
没有定义验证规则。它或多或少类似于-有助于指定在编辑或显示模式下渲染属性时要使用的模板

查看以了解有关为系统类型自定义验证消息的信息

PropertyValueInvalid
的值已格式化,{0}替换为无效值,{1}替换为属性名。所以你可以把它定义为

{1} 格式无效


在MVC4中,可以本地化默认错误消息

MVC4中的可以本地化默认错误消息

我猜这是因为
DateTime?
实际上是
null
的,而不是普通的
DateTime
。如果将初始日期声明为
public DateTime InitialDate{get;set;}
未更改任何内容,请查看它是否有效。保持相同的错误。啊,我没有真正理解地阅读你的问题:)我以前的评论可能会被划掉。无论如何,我现在掌握的最多的是一个模糊的理论,不知道如何回避这个问题,所以我将把这个话题留给比我更聪明的人我猜这是因为
DateTime?
实际上是
null
的,而不是普通的
DateTime
。如果将初始日期声明为
public DateTime InitialDate{get;set;}
未更改任何内容,请查看它是否有效。保持相同的错误。啊,我没有真正理解地阅读你的问题:)我以前的评论可能会被划掉。无论如何,我现在掌握的最多的是一个模糊的理论,不知道如何回避这个问题,所以我将把这个话题留给比我更聪明的人通过这种方式,我更改了默认消息。但是我怎样才能在消息中输入字段名呢?我遇到了一个问题。在VS中工作正常,但当我在测试机中发布项目时,会一直显示默认消息.Solved。我将
Messages.resx的
构建操作
更改为
内容
。通过这种方式,我更改了默认消息。但是我怎样才能在消息中输入字段名呢?我遇到了一个问题。在VS中工作正常,但当我在测试机中发布项目时,会一直显示默认消息.Solved。我将
Messages.resx的
构建操作
更改为
内容