2011-01-12 2 views
0

В моем приложении MVC я видел неожиданное поведение.Как RedirectToAction не ударил мое действие?

Допустим, у меня есть 3 метода действия

  • Подробности
  • Details_Fr
  • Details_En

Идея 2-го и 3-го в том, что они переходят на язык, а затем перенаправить на «Реальное» действие.

Однако, когда я вызываю RedirectToAction с точкой останова в «Детали», это не достигается. Это тот случай, когда я посещаю страницы в этом порядке «Контроллер/Детали», а оттуда «Контроллер/Подробнее_Fr».

Вот мои действия:

public ActionResult Details() 
    { 
     return View(new MyViewModel()); 
    } 

    public ActionResult Details_Fr() 
    { 
     this.SetLanguage(CultureInfo.GetCultureInfo("fr-CA")); 
     return RedirectToAction("Details"); 
    } 

    public ActionResult Details_En() 
    { 
     this.SetLanguage(CultureInfo.GetCultureInfo("en-US")); 
     return RedirectToAction("Details"); 
    } 

Я не ищет решения, как это легко сделать, изменив RedirectToAction на View (новый MyViewModel()). Я ищу объяснения, поэтому я понимаю, что и почему это происходит.

Спасибо!

+0

Каким выглядит определение маршрута? Это должно работать без проблем с маршрутами по умолчанию. –

ответ

0

Вы должны установить язык (CurrentCulture и CurrentUICulture on CurrentThread) в атрибуте ActionFilter вместо создания этих ужасных действий _Fr и _En ....!

+0

На самом деле я делаю именно то, КОТОРЫЙ Я НУЖЕН RedirectToAction, чтобы на самом деле переадресовать (в противном случае Инициализация не вызывается!). Все SetLanguage устанавливает культуру пользователя в переменную сеанса, так что процедура Initialize может устанавливать культуру с каждым запросом. Пожалуйста, прочитайте вопрос, что это совсем не о культуре, о том, как узнать больше о RedirectToAction! – Justin

+0

Проверьте Fiddler, если ваш первоначальный запрос в Details_Fr возвращается с HTTP 301. Вы также можете проверить URL-адрес. –

+0

Я предлагаю вам создать единый метод SetLanguage, который берет культуру и перенаправление в качестве параметров. –

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