Ajax 部分中的依赖注入从 Razor Pages Index.chtml.cs 中的操作方法加载

Dependency Injection in Ajax Partial that is loaded from an action method in Index.chtml.cs in Razor Pages

我正在尝试在此页面的部分视图中注入:@inject IStringLocalizer<IndexModel> localizer (Index.cshtml.cs),但它不起作用。 该服务在 Index.cshtml 主页中工作,但是当我加载部分时使用:

$('#formID').load('index?handler=form&first=@Model.FirstNameParam&last=@Model.LastNameParam')

并通过我在 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);            
    }

它只显示默认语言,我在布局中有一个“select 元素”,可以在三种语言之间切换,而当主页中的翻译发生变化时,ajax 加载了部分内容正在显示默认语言。

我尝试了不同的方法:1- 将 IStringLocalizer 服务注入 Index.cshtml.cs 文件并通过 viewbag 或直接通过模型 属性 使用它。 2- 直接在操作方法中注入此服务并将其发送到部分。 3- 将此服务直接注入部分。

None 有效,都显示默认语言(或者可能是密钥,因为密钥和默认翻译是相同的),我担心我将创建的其他服务也无法在ajax 部分。 如何在 Ajax 加载的部分(通过操作方法加载)中使用本地化和服务?

我将文化值发送到 ajax 操作方法:

 $('#formID').load('index?handler=form&culture=@Model.Culture&first=@Model.FirstNameParam&last=@Model.LastNameParam')

并向 Ajax 操作方法添加了文化参数:

public PartialViewResult OnGetForm(string culture, string first, string last)
    {
        //ViewData["Form"] = localizer["Form"];           
        //Input.Localizer = localizer;
        Input.FirstName = first;
        Input.LastName = last;
        return Partial("IndexPartials/Form", Input);            
    }

现在可以正常使用了。