2012-05-21 3 views
0

Я только начинаю играть с веб-страницами (Razor), и я понял некоторые основные понятия за стеной. Прежде всего я перечисляю мое всегда иметь к вещам для каждого сайта я строй:Концепция перевода и шаблона веб-страниц ASP.NET

  • Товарищеских URLS конечно (WebPages сделать это для меня)
  • Переведенных UR (WebPages поддерживает параметры, так что его легко управлять)
  • поддержка нескольких шаблонов (WebPages не поддерживает по умолчанию, то логика здесь требуется)
  • Расстались код для каждой функции, чтобы избежать дубликатов (WebPages поддерживает его за стеной)

Так что если вы думаете о Abov e list: старый добрый шаблон MVC входит в игру. ASP.NET уже имеет структуру MVC (3), которая обеспечивает всю необходимую мне функциональность. Я это хорошо знаю. На этом вопросе я пытаюсь выяснить, будет ли технология WebPages также идеальной платформой для разработки широкомасштабных веб-проектов MVC.

Я тестировал поведение загрузки/цепочку веб-страниц и выяснил, что это действительно цепочка, созданная загруженной страницей и одним или несколькими вложенными макетами. На каждой странице макета есть указатель на страницу своего загрузчика (Родитель).

На этом этапе я должен очистить некоторые основные понятия. Поскольку WebPages разрешает URL-адреса по физическим файлам и папкам (путям), переведенные URL-адреса косвенно поддерживаются, потому что я могу создавать переведенные папки и файлы с помощью таких путей: ..../en/account/register и я могу создать другой путь, например, венгерский язык путь: .../hu/szemelyes/regisztracio.

Все что мне нужно - это разделить код, потому что его не так элегантно записывать логику регистров в файл .cshtml. WebPages поддерживает @helpers и @functions, поэтому легко создать «Account.cshtml» и создать всю необходимую мне функцию. Это официальный ответ на мой вопрос.

Что происходит за стеной, если я написал @функцию в каком-то файле .cshtml (helper)? Он создает для меня новый класс, который наследует WebPageHelper. Я думаю, что это не слишком изящно, так как я могу создать свой собственный класс для обеспечения одинаковой функциональности.

Некоторые дополнительные исследования Я обнаружил, что каждая страница (и страница макета) наследует класс WebPage по умолчанию. С директивой @inherits я могу переопределить наследование по умолчанию и его прекрасный способ создать свой собственный класс, полученный из WebPage, и во всем моем файле .cshtml я могу напрямую наследовать эту страницу.

На данный момент я могу отделить код (я думаю :) более элегантный способ, чем использование @функций. Как насчет текстовых переводов? Я думаю, что это общий способ использования файлов ресурсов, но с веб-страницами, которые, как я думаю, хранят текстовые значения в простых файлах .cshtml. Что вы думаете об этом?

Наконец мой register.cshtml:

@inherits Account.Register 
@{ 
    Title = "Please Register" 
} 

..и мой regisztracio.cshtml:

@inherits Account.Register 
@{ 
    Title = "Kérem regisztráljon" 
} 

Мой класс Account.Register имеет строковое свойство Название:

public class Register : WebPage 
{ 
    public String Title { get; set; } 
    ... 
} 

Есть еще одна вещь, которую я должен сказать. Мой register.cshtml (а также regisztracio.cshtml) не содержит разметки html. У меня есть файл макета по умолчанию (_Master.cshtml), и у меня есть другие файлы макетов для каждой страницы (_Register.cshtml) в моем каталоге «Просмотр». Мой код автоматически загружает правильный файл макета страницы по имени моего загруженного класса «контроллер». Поэтому мой класс Register автоматически загружает файл макета «_Register.cshtml». И все файлы макета страницы автоматически загружают _Master.cshtml (или _Mobile.cshtml, если посетитель использует мобильное устройство), который является основным макетом.

Таким образом, я считаю, что это шаблон MVC, реализованный для технологии WebPages, и сохраняет веб-страницы в сильной функциональности, как автоматическое определение URL-адресов.

Как вы думаете?

Так это моя основная концепция с WebPages

ответ

0

Я уверен, что, как вы получите больше воздействия рамки вы будете включать другие методы. Что касается языкового перевода, вы можете использовать настройки культуры вместе с файлами ресурсов. Вы можете установить текущие настройки культуры с помощью global.asax на основе параметра запроса.

Пример инициализации параметров культуры:

CultureInfo ci = new CultureInfo("en-US"); 
Thread.CurrentThread.CurrentCulture = ci; 
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(ci.Name); 

Тогда ваше решение будет легко использовать строки ресурсов вместо текстовых строк, что делает код понятнее и сильно типизированных. В вашем случае это также позволит избежать двух отдельных просмотров регистрации.

@inherits Account.Register 
@{ 
    Title = StringsResource.RegisterTitle 
} 

В зависимости от настройки культуры, переменная Название проведет либо «Пожалуйста Register» текст или «Керем regisztráljon».

Удачи вам!

+0

Да, если бы я использовал традиционные файлы ресурсов, мне не нужен два или более файлов для конкретных языков для переводов. Но мне все еще нужны эти два или более файла для перевода url. Если я сохраняю только один файл на странице и использую файлы культуры и ресурсов, как я могу переводить URL-адреса? WebPages уже имеет маршрутную маршрутизацию маршрута, поэтому я думаю, что было бы легко построить мою концепцию для перевода url. Затем мне по-прежнему нужны отдельные файлы страниц для каждого языка. Тогда эти файлы будут пригодны для хранения текстов, специфичных для языка. – ggabor

+0

Вы можете создавать маршруты, которые пересылают пользователей на один и тот же вид, но имеют разные URL-адреса. Посмотрев на свой код, у вас есть контроллер, называемый учетной записью, и просмотр называется регистром. По умолчанию маршрут может быть одинаковым. Чтобы получить доступ к маршруту на венгерском языке, у вас будет что-то вроде этого: 'routes.MapRoute (« RegisterAccountHungarian »,« szemelyes/regisztracio/{id} », новый {controller =" account ", action =" register ", id = UrlParameter. Необязательно}); 'Вам нужно будет добавить параметр языка. – Igorrious

+0

И если бы я сделал это, мне нужно создать MapRoute для каждой переведенной папки и файла. С помощью WebPages уже выполняется по умолчанию механизм маршрутизации, основанный на путях. Я знаю, как работает MVC3. Здесь я пытаюсь построить новую концепцию для платформы WebPages. Поэтому я не хочу использовать функцию MapRoute. Я пытаюсь создать свое решение на основе простых путей к файлам - папкам и файлам. Я ищу наилучший, идеальный подход для этой технологии WebPages. Не для среды MVC3. – ggabor

 Смежные вопросы

  • Нет связанных вопросов^_^