我正在尝试替换MVC3中的默认验证消息,这些消息在您无法填写所需字段或填写无效值时显示。在这个问题中,我只讨论服务器端验证。我的无效值的自定义消息正在工作,但是丢失所需字段的消息将不适用。
这就是我所做的:
- _PropertyValueInvalid_: The value you input is invalid
- _PropertyValueRequired_: This field is required(这些不是我将要使用的实际消息;它们将使用不同的语言,这是我需要替换默认消息的主要原因)。
在我的模型中,我有一个名为DateTime的ExpirationDate属性。由于DateTime是不可空的,因此该属性是隐式要求的。PropertyValueInvalid工作;在提交ExpirationDate字段中的无效值(如30.02.2014 )后,我的自定义消息将在表单中呈现。但是,如果我将字段留为空并提交,则只能得到默认的“ExpirationDate字段是必需的”。
我在这里错过了什么?PropertyValueRequired的名字不对吗?还是它不适用于隐式要求的属性?我还尝试在模型中添加一个显式的必需属性,如下所示:
[Required]
public DateTime ExpirationDate{ get; set; }但这没什么区别。工作是向属性添加自定义错误消息,例如:
[Required(ErrorMessage = "We need a date here!")]
public DateTime ExpirationDate{ get; set; }但是,我不想对通常只需要一个通用消息的所有所需属性都这样做。(我知道我可以在所需的属性中引用资源文件中的通用消息,而不是直接声明消息,但这仍然给模型增加了不必要的混乱。)
发布于 2014-08-19 11:25:06
对于日期验证,您需要处理: FieldMustBeDate的本地化,实际上您所做的是正确的,但是为了处理所有消息,您需要本地化以下消息,以防万一:
FieldMustBeDate
FieldMustBeNumeric
PropertyValueInvalid
PropertyValueRequiredhttps://stackoverflow.com/questions/24404192
复制相似问题