Asp.net mvc Asp.Net MVC 2-更改PropertyValueRequired字符串
使用App_GlobalResources目录中的resx文件,我已经能够更改模型验证器的PropertyValueInvalid字符串的默认消息 但是当需要值(PropertyValueRequired)时,转换消息不起作用 在Global.asax.cs应用程序_Start()中,我更改了资源类键,如下所示:Asp.net mvc Asp.Net MVC 2-更改PropertyValueRequired字符串,asp.net-mvc,asp.net-mvc-2,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 2,Asp.net Mvc 3,使用App_GlobalResources目录中的resx文件,我已经能够更改模型验证器的PropertyValueInvalid字符串的默认消息 但是当需要值(PropertyValueRequired)时,转换消息不起作用 在Global.asax.cs应用程序_Start()中,我更改了资源类键,如下所示: DefaultModelBinder.ResourceClassKey = "Messages"; 在Messages.resx文件中,我添加了两个条目: “PropertyVal
DefaultModelBinder.ResourceClassKey = "Messages";
在Messages.resx文件中,我添加了两个条目:
- “PropertyValue无效”=>“O valor'{0}'éinválido para O campo{1}。”
- “PropertyValueRequired”=>“Énecessário digitar o{0}。”
谢谢。此消息被烘焙到
System.ComponentModel.DataAnnotations
程序集中,位于键RequiredAttribute\u ValidationError
下。您可以编写自定义验证属性:
public class MyRequiredAttribute : RequiredAttribute
{
public MyRequiredAttribute()
{
ErrorMessageResourceType = typeof(Messages);
ErrorMessageResourceName = "Required";
}
}
public class MyViewModel
{
[MyRequired]
public int Foo { get; set; }
}
然后在Messages.resx
文件中定义所需的字符串:
Required => É necessário digitar o {0}.
最后,使用此自定义属性装饰视图模型属性:
public class MyRequiredAttribute : RequiredAttribute
{
public MyRequiredAttribute()
{
ErrorMessageResourceType = typeof(Messages);
ErrorMessageResourceName = "Required";
}
}
public class MyViewModel
{
[MyRequired]
public int Foo { get; set; }
}
怎么样
[Required (ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Messages)]
public string Foo { get; set; }
Required => É necessário digitar o {0}.
或
请参阅下面的链接以获取完整的asp.net mvc本地化指南
未使用DefaultModelBinder.GetValueRequiredResource的RequiredAttribute。
创建自定义DataAnnotationsModelValidator类
public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute)
: base(metadata, context, attribute)
{
attribute.ErrorMessageResourceType = typeof (Messages);
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}
并在Global.asax中注册适配器
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter));
希望这有帮助
只需像这样添加
[Required(ErrorMessage = "Your Error Message, here..!")]
我注意到了同样的行为。解决方案有人吗?@mare您的确切问题是什么-在使用数据注释的模式验证中,resx文件中未使用PropertyValueRequired消息?是的,与daniel的问题完全相同。您尝试过我下面的解决方案吗?我想Darin的更好一点,这是对您的解决方案的升级。因此,对于相同的概念,ASP.NET MVC团队正在使用两种不同的构造?@mare,我们只希望在将来的MVC版本中,这一点会得到修复/变得更容易。要在ASP.NET MVC 3中在客户端工作,您需要注册自定义属性()或使用AttributeAdapter方法()这正是我一直在寻找的,谢谢!(附:链接断开了)这是我在这个问题上找到的最好的答案。这很好。另外,请参阅本文,了解存储DataAnnotationsModelValidator类的最佳实践位置在哪里?这需要什么名称空间(使用)?如何使其全局化,从而不需要添加(ErrorMessageResourceName=“Required”,ErrorMessageResourceType=typeof(Messages)。或如何使字段的错误消息需要一个整数值,但用户输入“abc”不确定您的意思-使其成为全局,但对于整数值错误消息-这有帮助吗?