添加资源文件到App_GlobalResources
with a PropertyValueRequired
关键和变化DefaultModelBinder.ResourceClassKey
文件名对 MVC 4 没有影响。字符串The {0} field is required
从未改变。
我不想在每个必填字段上设置资源类类型和键。
我错过了什么吗?
Edit:
我对 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";
}
}
}
这不是 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";
}
}
您将在其中注册Application_Start
:
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(RequiredAttribute),
typeof(MyRequiredAttributeAdapter)
);
现在,当非空字段未分配值时,错误消息将来自Messages.PropertyValueRequired
where Messages.resx
必须在内部定义App_GlobalResources
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)