Я следовал этой статье и прошел тест, показывающий, что пользовательские сообщения об ошибках проверки возвращаются из файла ресурса при сбое вызова Validator.IsValid (someEntity).
Я пытаюсь перевести это на новую ненавязчивую проверку на стороне клиента в MVC3, описанную этой статьей . Это также более или менее работает - хорошо, проверка на стороне клиента делает так, что я могу предположить, что моя проводка NHValidators хороша, поскольку вы можете видеть следующее:
<input data-val="true" data-val-required="{NotNullNotEmpty}" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Username" data-valmsg-replace="true">
Моя проблема в том, что на этот раз CustomMessageInterpolator не сработал - строка ресурса не была переведена для этого свойства (она все еще в фигурных скобках): {NotNullNotEmpty}.
В моем тесте и в Интернете используется одна и та же конфигурация NHValidator:
var cfg = new FluentConfiguration();
cfg
.SetMessageInterpolator<CustomMessageInterpolator>()
.SetCustomResourceManager("MyProject.Core.Resources.ValidationMessages", Assembly.Load("MyProject.Core"))
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load("MyProject.Core").ValidationDefinitions())
Для примера приведу фрагмент модели:
public class LoginModel
{
[NotNullNotEmpty(Message = "{NotNullNotEmpty}")]
public string Username { get; set; }
Я знаю, но любые идеи будут оценены по достоинству!