Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Ресурсы сайта






Ресурсы сайта – это все статические строки, которые надо перевести:

· Наименования меню

· Подсказки

· Выводы ошибок


На главной странице у нас таких строк четыре: роли, пользователи, вход и регистрация. Создадим ресурсные файлы:

· Добавим папку Asp.net папку App_LocalResources:

· Создадим в ней файлы GlobalRes.resx и GlobalRes.en.resx:

· Добавляем в них наши строки, в GlobalRes – русский перевод, в GlobalRes.en – английский:

Enter Вход
Register Регистрация
Roles Роли
Users Пользователи

 

· Открываем для 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):

EnterEmail Введите email
EnterPassword Введите пароль

· Задаем правила валидации в 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(),

Проверяем:






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.