У меня есть многоязычное веб-приложение, в котором я использую файлы ресурсов и класс BasePage, который устанавливает культуру на основе QueryString, которая была включена в страницу, которая наследуется от этого класса. Это все работает хорошо, если немного неуклюжий, как я того, чтобы сделать такие вещи для каждой кнопки, которая принимает пользователя на другую страницу, чтобы сохранить культуру:Как поддерживать культуру через переменную сеанса
if (Thread.CurrentThread.CurrentCulture.ToString() == "cy-GB")
{
return "~/Secure/Details.aspx?lang=cy-GB&PersonId=" + currentPersonId;
}
else
{
return "~/Secure/Details.aspx?PersonId=" + currentPersonId;
}
Я знал, что, вероятно, лучше способ сделать это, но будучи новичком, поскольку он работал, я просто сделал.
Это было до тех пор, пока мне не пришлось реализовать управление asp:SiteMapPath
. Сначала я предположил, что я мог бы просто создать запись ресурса для url
собственности, как я сделал для title
:
<siteMapNode
title="$resources:SiteMapLocalizations,HomePageTitle"
description="Home"
url="~$resources:SiteMapLocalizations,HomePageUrl">
Однако это привело к ошибке сервера:
A potentially dangerous Request.Path value was detected from the client (:).
я сделал некоторые чтение, и я считаю, что мне нужно каким-то образом сохранить текущую культуру в переменной сеанса, которая будет следовать за пользователем, поэтому, когда они нажимают «Главная» на палитре, она будет соответствовать культуре и захватывает соответствующий текст из файлов ресурсов, я Я также надеюсь, что это позволит мне удалить все IF ELSE
я должен был писать, чтобы поддерживать текущий язык во всем приложении.
Мой вопрос, однако, где я начинаю с этого, я не могу найти какое-либо руководство шаг за шагом, чтобы следовать, чтобы достичь этого, может ли кто-нибудь предоставить некоторые инструкции?
Посмотрите на документацию для Page.InitializeCulture, и "Как" статьи, связанные с этой страницы: http://msdn.microsoft. com/en-us/library/system.web.ui.page.initializeculture (v = vs.110) .aspx – Joe