![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ресурсы сайта
Ресурсы сайта – это все статические строки, которые надо перевести: · Наименования меню · Подсказки · Выводы ошибок На главной странице у нас таких строк четыре: роли, пользователи, вход и регистрация. Создадим ресурсные файлы: · Добавим папку Asp.net папку App_LocalResources: · Создадим в ней файлы GlobalRes.resx и GlobalRes.en.resx: · Добавляем в них наши строки, в GlobalRes – русский перевод, в GlobalRes.en – английский:
· Открываем для GlobalRes свойства и устанавливаем следующие значения для полей o Build Action: Embedded Resource o Custom Tool: PublicResXFileCodeGenerator · Теперь добавим namespace LessonProject.App_LocalResources в Web.cofig в system.web.webPages.razor (Web.config): < system.web.webPages.razor> < pages pageBaseType=" System.Web.Mvc.WebViewPage" > < namespaces> < add namespace=" LessonProject.Helper" /> < add namespace=" LessonProject.Tools" /> < add namespace=" LessonProject.App_LocalResources" /> < /namespaces> < /pages> < /system.web.webPages.razor> · Используем в UserLogin.cshtml (/Areas/Default/Views/Home/UserLogin.cshtml) и Index.cshtml ((/Areas/Default/Views/Home/Index.cshtml): @model LessonProject.Model.User
@if (Model! = null) { < li> @Model.Email< /li> < li> @Html.ActionLink(" Выход", " Logout", " Login")< /li> } else { < li> < span class=" btn btn-link" id=" LoginPopup " > @GlobalRes.Enter < /span> < /li> < li> @Html.ActionLink(GlobalRes.Register, " Register", " User")< /li> }
…
@{ ViewBag.Title = " LessonProject"; Layout = " ~/Areas/Default/Views/Shared/_Layout.cshtml"; } < h2> LessonProject < /h2> < p> @DateTime.Now.ToString(" D") < div class=" menu" > < a href=" @Url.Action(" Index", " Role", new { id = " 1" })" > @GlobalRes.Roles < /a> @Html.ActionLink(GlobalRes.Users, " Index", " User") < /div>
< /p> Запускаем, проверяем: Перейдем к заданию сообщений валидации на примере LoginView: · Выделяем ErrorMessage для полей в ресурсные файлы (/App_LocalResources/GlobalRes.resx):
· Задаем правила валидации в LoginView.cs (/Models/ViewModel/LoginView.cs):
public class LoginView { [Required(ErrorMessageResourceType=typeof(GlobalRes), ErrorMessageResourceName=" EnterEmail")] public string Email { get; set; } [Required(ErrorMessageResourceType = typeof(GlobalRes), ErrorMessageResourceName = " EnterPassword")] public string Password { get; set; }
public bool IsPersistent { get; set; } }
Проверяем в страничной версии https://localhost/en/Login: Но для popup входа эти предупреждения так и останутся на русском языке, потому, что мы для вызова popup-блока используем url по умолчанию. Соответственно, задав параметр lang, мы сможем изменить это: · Добавим в ресурсы (/App_LocalResources/GlobalRes(.en).resx)CurrentLang = ru и CurrentLang = en · Выведем это в hidden-поле в _Layout.cshtml (/Areas/Default/Views/Shared/_Layout.cshtml): < body> @Html.Hidden(" CurrentLang", GlobalRes.CurrentLang) < div class=" navbar navbar-fixed-top" > · Добавим это в ajax-вызовы (/Scripts/common.js): _this = this; this.loginAjax = " /Login/Ajax";
this.init = function () { _this.loginAjax = " /" + $(" #CurrentLang").val() + _this.loginAjax; $(" #LoginPopup").click(function () { _this.showPopup (_this.loginAjax, initLoginPopup); }); }
function initLoginPopup(modal) { $(" #LoginButton").click(function () { $.ajax({ type: " POST", url: _this.loginAjax, data: $(" #LoginForm").serialize(), Проверяем:
|