• Привет, Гость!
  • Войти
  • Регистрация
  • Записи
  • Форумы
  • Люди
  • Файлы
  • Работа
  • Технологии
  • Все
  • Новости
  • События
  • Статьи
  • Блоги

Rail Sabirov

ASP.NET MVC Tip #2 Локализация LabelFor

Raimon
17.02.2010 1:49
В приложениях ASP.NET MVC 2 удобно использовать такой код:
<div class="editor-label">
    <%= Html.LabelFor(m => m.UserName) %>
</div>
<div class="editor-field">
    <%= Html.TextBoxFor(m => m.UserName) %>
    <%= Html.ValidationMessageFor(m => m.UserName) %>
</div> 
В результате получаем название (label), элемент для редактирования и сообщения валидаторов для одного поля формы. Название и валидаторы получаются из аттрибутов модели следующего вида:
public class LogOnModel {
    [Required]
    [DisplayName("User name")]
    public string UserName { get; set; }

    // other properties
}
Мы вплотную подошли к проблеме: локализации текстов UI. В нашем случае это тексты сообщений об ошибках валидации и название поля. Для текстов сообщений об ошибках валидации, у всех аттрибутов валидации (наследников от ValidationAttribute) наряду со свойством ErrorMessage, имеется пара свойства ErrorMessageResourceType, ErrorMessageResourceName которые определяют тип и ключ строки из ресурсного файла. Что же касается аттрибута DisplayName, текст из которого выводится в LabelFor, то встроенной возможности локализации в нем не предусмотрено (что очень и очень удивительно).

Чтобы решить данную проблему можно воспользоваться аттрибутом LocalizableDisplayNameAttribute , исходный текст которого можно найти в прикрепленном примере. Теперь наша модель будет выглядеть следующим образом:
public class LogOnModel {
    [Required(ErrorMessageResourceType = typeof(Resources),
        ErrorMessageResourceName = "UserNameRequired")]
    [LocalizableDisplayName(ResourceType = typeof(Resources),
        ResourceName = "UserNameLabel")]
    public string UserName { get; set; }
    
    // other properties
}
И на последок, если будете создавать ресурсные файлы в App_GlobalResources, то не забудьте поменять свойство Custom Tool для ресурсного файла с GlobalResourceProxyGenerator на PublicResXFileCodeGenerator, чтобы при генерации создавался публичный класс.

Пример приложения с одним локализованным полем можно скачать тут :).
Raimon
17.02.2010 1:49
Комментариев:2 Просмотров:889
Теги: ASP.NET MVC, localization

ASP.NET MVC Tip #1 “определяйте routing явно”

Raimon
26.06.2009 10:15
Прописывайте все routing’и явно.

Читать дальше
Raimon
26.06.2009 10:15
Комментариев:6 Просмотров:453

требуется помощь сообщества: бесконтрольно размножаются vsmdi файлы

Raimon
18.08.2008 10:52
кто-нибудь может дать внятное объяснение бесконтрольно плодящимся vsmdi файлам?

Читать дальше
Raimon
18.08.2008 10:52
Комментариев:7 Просмотров:382
Теги: .NET, Microsoft, question

Указание пути для создания логов в log4net

Raimon
15.08.2008 15:59
пара слов о конфигурировании log4net

Читать дальше
Raimon
15.08.2008 15:59
Комментариев:0 Просмотров:335
Теги: .NET, tips

catch (Exception e) => e ==null

Raimon
01.08.2008 15:02
история о том, что не все инварианты инвариантны :)

Читать дальше
Raimon
01.08.2008 15:02
Комментариев:11 Просмотров:475
Теги: .NET, bugs

Лучший в мире броузер. Теперь и под Windows

Raimon
24.03.2008 18:18
Наконец-то появился первый релизный Safari под Windows! По заявлениям Apple, Safari самый быстрый!

Читать дальше
Raimon
24.03.2008 18:18
Комментариев:20 Просмотров:686
Теги: Browser, Other, Perfomance, Safari

"Велосипед по-умолчанию..."

Raimon
25.08.2007 17:48
Одним из "велосипедов" часто изобретаемых в ASP.NET является написание клиентского скрипта, для установки кнопки "по-умолчанию", которая нажималась бы при нажатии Enter в поле ввода. На самом деле в типичных случаях вопрос решается простой настройкой свойств.

Читать дальше
Raimon
25.08.2007 17:48
Комментариев:8 Просмотров:410
Теги: .NET GUI, ASP.NET

PageMethod calls via MS AJAX

Raimon
15.08.2007 16:15
О требованиях предъявляемых при использовании PageMethods из клиентского кода используя ASP.NET AJAX

Читать дальше
Raimon
15.08.2007 16:15
Комментариев:3 Просмотров:296
Теги: AJAX, ASP.NET AJAX, PageMethods

Онлайн-конференция Министр информатизации и связи РТ

Raimon
31.05.2007 8:50

24 мая 2007 г. состоялась открытая сессия вопросов-ответов, в ходе которой в течение более трех часов в режиме реального времени Фарит Фазылзянов отвечал на вопросы посетителей сайта http://sotnya.ru .

http://www.sotnya.ru/fazylzyanov/

Вопросы четко отражают региональные проблемы, особенно вопросы на которые не даны ответы.



Оригинал сообщения по адресу http://www.itkazan.com/blogs/raimon
Raimon
31.05.2007 8:50
Комментариев:0 Просмотров:97

Уникум

Raimon
16.04.2007 20:44

Все, наверное, уже слышали о Валерии Комисаровой, о школьнице из Казани, которая является самым молодым сертифицированным специалистом Microsoft (MCSD). Валерия пишет для лучших российских IT журналов: IT Спец, Хакер (и может быть еще каких то:).  Недавно у нее вышла книга «Программирование драйверов для Windows». Как видно из названия, книга более чем серьезная.

Кто-нибудь знал в школьные годы что такое драйверы, как работает компьютер, ассемблер?? Кто-нибудь написал книгу? :)

Я в шоке...

 

В принципе было очевидно, что Казань будет слишком тесной для нее… но вот думается, не будет ли тесновата Москва? Не «утечет» ли Валерия?

 

В любом случае желаю дальнейших успехов этому уникальному человеку.



Оригинал сообщения по адресу http://www.itkazan.com/blogs/raimon
Raimon
16.04.2007 20:44
Комментариев:0 Просмотров:96
Страницы: ← предыдущая следующая → 
1 2

Rail Sabirov

Raimon разработчик
[MSP]
  • Блог

Облако тегов

.net .net gui ajax asp.net asp.net ajax asp.net mvc browser bugs dotnet 3 fun google gotdotnet localization maps microsoft office 2007 other pagemethods perfomance philosophy question safari tips web development ввод данных

Записи

Популярные
  • diverofdark > C#: Expression Tree + Extension Method + Lambda как замена Safe Navigation Operator
  • sashaeve > Интересные возможности C# и ASP.NET
  • trukhinyuri > О чтении технической литературы в pdf на английском
  • snoralip > Обработка структурированн­ого текста с помощью регулярных выражений
  • Dmitryk > Парадигма генерации и обработки исключений
  • snoralip > Применение хеш-функций, SHA1, GetHashCode, HashSet и Dictionary
  • mvcdev > Говорящий PowerShell скрипт
  • mbakirov > I am back.
  • ][tiger > Singleton in .NET 4.0 - вопрос снят?
  • SergeyT. > [Перевод] Джозеф Албахари. Работа с потоками в C#. Часть 3
Все популярные записи
Обсуждаемые
  • mbakirov > I am back.
  • trukhinyuri > О чтении технической литературы в pdf на английском
  • diverofdark > C#: Expression Tree + Extension Method + Lambda как замена Safe Navigation Operator
  • NetGuru > Определение имени текущего пользователя SharePoint
  • snoralip > Применение хеш-функций, SHA1, GetHashCode, HashSet и Dictionary
  • Dmitryk > Парадигма генерации и обработки исключений
  • NetGuru > Строка подключения к БД.
  • Soldata > Преобразование даты в строку типа "вчера; сегодня; завтра" с помощью метода расширения
  • NetGuru > Extension methods – «методы-расшири­тели»:
  • trukhinyuri > Группы в Windows Live Messenger
Все обсуждаемые записи

Блоги

Новые
  • sharok> Round Angle .NET
  • Regfor> Блог
  • NetGuru> Kurakin Vit's Blog
  • Andrey> Андрей Веселов
  • danverPD> podzyubanBlogs
  • Stanislav Gornakov> Stanislav Gornakov
  • k0stya> k0stya
  • ][tiger> Just do IT - просто дует
  • Oxozle> KLUBS
  • mvcdev> WebDev
Обсуждаемые
  • mihailik> Олег Михайлик
  • ceo> Нотатник Вiктора Шатохiна [MSFT]
  • gaidar> Gaidar Magdanurov
  • MikhailChernomo­rdikov> Mikhail Chernomordikov [MSFT]
  • Alexander Lozhechkin [MSFT]> Alexander Lozhechkin
  • agladkik> Andrey Gladkikh: Microsoft Dynamics
  • sergun> Sergey Zwezdin
  • beerbong> Bong Blog
  • sos> Dmitry Soshnikov [MSFT]
  • not-a-kernel-gu­y> Зеркало: Not a kernel guy
О сайте   Свяжитесь с нами   Версия для печати
Работает на 1С-Битрикс: Управление сайтом ASP.NET  |  Хостинг на Parking.Ru