Ответ 1
Это не относится к 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
, где Messages.resx
должно быть определено внутри App_GlobalResources
.