微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决从 Razor Pages 中 Index.chtml.cs 中的操作方法加载的 Ajax Partial 中的依赖注入

我正在尝试在此页面的局部视图 (Index.cshtml.cs) 中注入:@inject IStringLocalizer<IndexModel> localizer,但它不起作用。 该服务在 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);            
    }

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

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

它们都不起作用,都显示认语言(或者可能是键,因为键和认翻译是相同的),我担心我将创建的其他服务在 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);            
    }

现在它可以工作了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。