Я пытаюсь ввести: @inject IStringLocalizer<IndexModel>
локализатор в частичное представление этой страницы (Index.cshtml.cs), но это не работает. Служба работает на главной странице Index.cshtml, но когда я загружаю часть, используя:
$('#formID').load('index?handler=form&[email protected]&[email protected]')
и с помощью метода действия, который я определил в Index.cshtml.cs:
public PartialViewResult OnGetForm(string first, string last)
{
//ViewData["Form"] = localizer["Form"];
//Input.Localizer = localizer;
Input.FirstName = first;
Input.LastName = last;
return Partial("IndexPartials/Form", Input);
}
Он показывает только язык по умолчанию, у меня есть элемент выбора в макете, который изменяется между тремя языками, и пока перевод меняется на главной странице, загруженные части ajax показывают язык по умолчанию.
Я пробовал разные вещи: 1- Внедрение службы IStringLocalizer в файл Index.cshtml.cs и использование ее через viewbag или напрямую через свойство модели. 2- Внедрение этой службы непосредственно в метод действия и отправка ее, как указано выше, в частичную. 3- вводить эту услугу непосредственно в партиал.
Ни один из них не работает, все показывают язык по умолчанию (или, может быть, ключ, поскольку ключ и перевод по умолчанию одинаковы), я боюсь, что другие службы, которые я создам, не будут работать ни с частичными элементами ajax. Как использовать локализацию и сервисы в Ajax-загруженных партиалах (которые загружаются с помощью методов действий)?