Próbuję zaimplementować lokalizację w niestandardowym atrybucie sprawdzania poprawności w asp.net core 1.0. To jest mój uproszczony ViewModel:Lokalizacja niestandardowego atrybutu sprawdzania ASP.NET Core
public class EditPasswordViewModel
{
[Required(ErrorMessage = "OldPasswordRequired")]
[DataType(DataType.Password)]
[CheckOldPassword(ErrorMessage = "OldPasswordWrong")]
public string OldPassword { get; set; }
}
Lokalizację "OldPasswordRequired" działa dobrze. Jednak lokalizacja mojego niestandardowego atrybutu nie działa i zawsze zwraca komunikat "OldPasswordWrong". Jest to kod:
public class CheckOldPasswordAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object classInstance, ValidationContext validationContext)
{
if (oldPasswordSaved == oldPasswordTyped) //simplified
{
return ValidationResult.Success;
}
else
{
string errorMessage = FormatErrorMessage(ErrorMessageString);
return new ValidationResult(errorMessage);
}
}
}
ErrorMessageString jest zawsze "OldPasswordWrong" i FormatErrorMessage powraca zawsze "OldPasswordWrong". Co ja robię źle? Używam nowych lokalizacji adnotacji danych podstawowych asp.net, więc nie używam atrybutów ErrorMessageResourceName i ErrorMessageResourceType (nie mam żadnych ViewModel.Designer.cs).
Dziękuję bardzo
Dzięki, uratowałeś mój dzień! Miałem nadzieję, że nie muszę napisać tak dużo "kodu kleju" chociaż ... – rickyalbert