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.resxApp_GlobalResources
| 归档时间: |
|
| 查看次数: |
6712 次 |
| 最近记录: |