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);
}
现在可以正常使用了。
我正在尝试在此页面的部分视图中注入:@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);
}
现在可以正常使用了。