У меня есть действие Регистрировать в моем приложении Сеть САШ Mvc и имеет атрибут валидации
[CaptchaValidation("Captcha", "captchaValidateId", "errorMessage")]
Локализации в CaptchaValidation
Теперь мне нужна локализация с помощью ресурсов, но этот атрибут принимает только строку как errorMessage
пар, так что я сделал мой собственный LocalizedCaptchaValidationAttribute
:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class LocalizedCaptchaValidationAttribute :
BotDetect.Web.Mvc.CaptchaValidationAttribute
{
public LocalizedCaptchaValidationAttribute(string inputfield, string captchaId)
: base(inputfield, captchaId, AccountRes.InvalidCapcha)
{
}
}
Но есть проблемы. Конструктор, вызванный только при первом вызове действия Реестра. Таким образом, после сообщения об изменении языка все еще остается неизменным.
Например: Открыть китайская версия страницы ввода неправильно капчу представить, получить
"недействительные Capcha _CH" ошибка. Затем переключитесь на английский, введите неверный capcha, отправьте, получите ошибку «Неверный capcha _ch» вместо «Недействительный capcha _en».
Как это решить?
P.S. Локализация работает через коды языков в MapRoute
(пример:/ru/Account/Register) и установка Thread.CurrentThread.CurrentUICulture
и Thread.CurrentThread.CurrentCulture
.
Локализация по языковым кодам работает на других страницах? (проблема только в captcha?) –
Все отлично сейчас. Проблема в локализации строк, прошедших в атрибутах. – kir