我正在开发ASP.NET MVC3应用程序。
我对我的模型的某些属性使用DataAnnotations
,如果输入不正确,则会显示自定义错误消息
但是,当我在localhost中运行我的应用程序时,它完全有效,但是当我将它放在我的网络服务器(这是一个共享的Web服务器)上时,默认情况下会出现错误消息。
以下是一个例子:
[Required]
[Range(1d, 1000d, ErrorMessage = "My custom error message in French")]
public decimal Surface { get; set; }
当用户输入" abcde"在Surface
字段中,我有以下错误消息:
字段Surface必须是数字。
但是,它应该显示指定的ErrorMessage。这适用于localhost,但不适用于我的网络服务器。
我试图强迫web.config
中的文化如下:
<globalization culture="fr-FR" uiCulture="fr-FR"/>
但这不起作用。
如何强制应用程序显示ErrorMessage
?
我无法修改托管我的应用的网络服务器上的任何内容,它是托管在本地网站上的个人项目。
感谢您的帮助
答案 0 :(得分:1)
正如斯蒂芬·穆克(Stephen Muecke)写的那样#abcde&#34;无法解析为小数,因此它显示了一般错误&#34;字段Surface必须是数字&#34;。
要在自定义消息中生成错误消息,您需要检查输入是否为数字/小数,并且可以使用正则表达式执行此操作。更改您的代码如下
[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,那么它也会给出错误。您可以查看正则表达式来构建另一个最适合您的表达式。