我在ASP.NET MVC 4中遇到验证错误的问题。
我为一个只接受数字输入的字段应用了RegularExpression
规则。如果数据包含任何其他字符,则应显示错误消息。
[RegularExpression("^[0-9]*$", ErrorMessageResourceType = typeof(Resources.General), ErrorMessageResourceName = "CodeMustBeNumeric")]
public string Code { get; set; }
问题是,无论当前的文化设置是什么,它始终显示默认资源而不是本地资源。还有一些细节可供参考。
我的资源:
结果:
如您所见,所有字符串的当前文化都是意大利语,但不是验证错误。我做错了什么?
答案 0 :(得分:0)
我认为我做错了,并且有一种开箱即用的解决方法,但是通过更深入的搜索,我发现常见的解决方案只是创建一个自定义验证属性,它来自ASP。 NET一个。
所以我做了,它工作正常。如果有人需要它,这里是:
public class CustomRegularExpressionAttribute : RegularExpressionAttribute
{
public override string FormatErrorMessage(string name)
{
string currentLang = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName;
CultureInfo ci = new CultureInfo(currentLang);
return HttpContext.GetGlobalResourceObject(ErrorMessageResourceType.Name.ToString(), ErrorMessageResourceName, ci).ToString();
}
public CustomRegularExpressionAttribute(string pattern)
: base(pattern)
{
}
}
新电话:
[CustomRegularExpression("^[0-9]*$", ErrorMessageResourceType = typeof(Resources.General), ErrorMessageResourceName = "CodeMustBeNumeric")]
public string Code { get; set; }