Перенаправить на ту же страницу в другой папке

1

Как перенаправить на ту же страницу в другой папке?

У меня есть веб-сайт с двумя разными языками. Могу ли я перенаправить на ту же страницу на другом языке/папке, если я нажму кнопку языковой ссылки? Пример. Если я нахожусь на странице регистрации, когда я нажимаю кнопку ссылки на другом языке, я хочу, чтобы меня переадресовали на ту же страницу на другом языке/в папке.

Основное звено языков находится на главной странице.

Это возможно?

Теги:

2 ответа

1
Лучший ответ

Если я правильно понимаю, вы используете подпапку для управления своей культурой. Таким образом, у вас будет пример ~/en/Default.aspx и ~/fr/Default.aspx.

Если это так, вы используете этот фрагмент кода.

        //For exemple: /en/Default.aspx
        string currentURL = HttpContext.Current.Request.Url.AbsolutePath;

        //Manage different part of the URL
        string[] urlParts = currentURL.Split(new string[] {"/"},StringSplitOptions.RemoveEmptyEntries);

        //Remove the old culture code
        IEnumerable<string> invariantUrlParts = urlParts.Skip(1);

        //Rebuild the URL
        string newUrl = String.Format("~/{0}/{1}", "fr", String.Join("/", invariantUrlParts));

        //Redirect to ~/fr/Default.aspx
        Response.Redirect(newUrl);

РЕДАКТИРОВАТЬ

Если вы поклонник одного лайнера:

Response.Redirect(HttpContext.Current.Request.Url.AbsolutePath
.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries)
.Skip(1)
.Aggregate(String.Format("~/{0}", "fr"), (i, j) => i + "/" + j));
  • 0
    спасибо большое за то что мне нужно спасибо за помощь
1

Представьте, что у вас есть выпадающий список со всеми языками, и после выбора вы хотите загрузить ту же страницу на выбранном языке...

и если вы знаете текущий язык (например, в переменной сеанса), который загружен, вы можете:

как выпадающее меню:

<select id="langSelector" onchange="changeCountry(this.value);">
  <option value="en">English</option>
  <option value="es">Spanish</option>
  <option value="fr">French</option>
</select>

в javascript:

var currentLanguage = "en"; 
// for example in ASP.NET Webforms
// var currentLanguage = "<%= Session["currentLanguage"] %>";

function changeCountry(selectedLanguage) {
  var preLang = '/' + currentLanguage + '/',
      newLang = '/' + selectedLanguage + '/';  
  document.location = document.location.pathname.replace(preLangig, newLang);
}

объяснение:

в javascript document.location.pathname покажет полный путь после протокола и имени домена, и если у вас есть простой /en/ вы можете заменить это с помощью /fr/ и снова загрузить остальные.

чтобы быть отказоустойчивым, вам нужно сделать replace игнорируя случай, поэтому En или eN также могут быть переведены на fr.

в этой причине вы будете использовать это:

function changeCountry(selectedLanguage) {
  var newLang = '/' + selectedLanguage + '/';  
  document.location = 
     document.location.pathname.replace(
         /\/<%= Session["currentLanguage"].ToString().ToLower() %>\//i, 
         newLang);
}

поэтому у вас будет:

.replace(/\/<%= Session["currentLanguage"].ToString().ToLower() %>\//i, newLang);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню