Edu*_*rdo 21 asp.net-mvc localization model-binding asp.net-mvc-4
App_GlobalResources
使用PropertyValueRequired
密钥添加资源文件并更改DefaultModelBinder.ResourceClassKey
为文件名对MVC 4没有影响.字符串The {0} field is required
永远不会更改.我不想在每个必填字段上设置资源类类型和键.我错过了什么吗?
编辑:
我对Darin Dimitrov的代码进行了一些小修改,以保持必需的自定义工作:
public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute
)
: base(metadata, context, attribute)
{
if (attribute.ErrorMessageResourceType == null)
{
attribute.ErrorMessageResourceType = typeof(Messages);
}
if (attribute.ErrorMessageResourceName == null)
{
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 40
这不是特定于ASP.NET MVC 4.它在ASP.NET MVC 3中是相同的.您不能使用DefaultModelBinder.ResourceClassKey
仅设置所需的消息PropertyValueInvalid
.
实现您所需要的一种方法是定义自定义RequiredAttributeAdapter
:
public class MyRequiredAttributeAdapter : RequiredAttributeAdapter
{
public MyRequiredAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
RequiredAttribute attribute
) : base(metadata, context, attribute)
{
attribute.ErrorMessageResourceType = typeof(Messages);
attribute.ErrorMessageResourceName = "PropertyValueRequired";
}
}
Run Code Online (Sandbox Code Playgroud)
你将注册Application_Start
:
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter)
);
Run Code Online (Sandbox Code Playgroud)
现在,当一个不可为空的字段没有赋值时,错误信息将来自必须在里面定义的Messages.PropertyValueRequired
地方.Messages.resx
App_GlobalResources
归档时间: |
|
查看次数: |
6712 次 |
最近记录: |