模型 属性 的自定义错误消息仅在生产环境中不显示

Custom ErrorMessage for model property is not displayed in production environment only

我正在开发 ASP.NET MVC3 应用程序。

我对模型的某些属性使用 DataAnnotations,如果输入不正确,会显示自定义错误消息。
但是,当我 运行 我的应用程序在本地主机上时它完美地工作,但是当我把它放在我的网络服务器(这是一个共享的网络服务器)上时,错误消息是默认的。

这是一个例子:

[Required]
[Range(1d, 1000d, ErrorMessage = "My custom error message in French")]
public decimal Surface { get; set; }

当用户在 Surface 字段中键入 "abcde" 时,出现以下错误消息:

The field Surface must be a number.

但是,它应该显示指定的错误消息。这适用于本地主机,但不适用于我的网络服务器。

我试图在 web.config 中强制文化如下:

<globalization culture="fr-FR" uiCulture="fr-FR"/>

但这行不通。

如何强制应用程序显示 ErrorMessage
我无法在托管我的应用程序的 Web 服务器上修改任何内容,这是托管在本地网站托管上的个人项目。

感谢您的帮助

正如 Stephen Muecke 所写,"abcde" 无法解析为小数,因此它显示了 "The field Surface must be a number" 的一般错误。

要使错误消息成为自定义消息,您需要检查输入是否为 number/decimal,您可以使用正则表达式来完成。按如下方式更改您的代码

[Required]
[RegularExpression(@"^\d+.\d{0,2}$",ErrorMessage = "custom error in your language")]// add this extra line
[Range(1d, 1000d, ErrorMessage = "My custom error message in French")]
public decimal Surface { get; set; }

您需要添加以下行

[RegularExpression(@"^\d+.\d{0,2}$",ErrorMessage = "custom error in your language")]

它通过正则表达式检查它是否是一个数字,它还会检查小数点,如果它们大于 2,比如 2.002,那么它也会给出错误。您可以查看正则表达式以构建另一个最适合您的表达式。