c# - 从 Razor 页面中 Index.chtml.cs 中的操作方法加载的 Ajax Partial 中的依赖注入
问题描述
我正在尝试@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);
}
它只显示默认语言,我在布局中有一个“选择元素”,可以在三种语言之间变化,而当主页中的翻译发生变化时,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);
}
现在它正在工作。
推荐阅读
- java - 使用 Apache POI 获取 Excel 填充颜色
- database-design - 如何为博客设计数据库(带有系列文章)?
- python - Pandas df to csv 插入空行
- gtk - 在 Linux 上 GTK+3 的 GtkDrawingArea 中拦截 X11 KeyPress 事件
- php - codeigniter中的多个加入不起作用
- php - 配置 apache 运行 node.js 应用
- html - 如何工作位置粘相对窗口?
- php - PHPMailer 中奇怪的 $_POST 行为
- c# - 在 MVC 上的 Microsoft 站点上使用 WordprocessingDocument 基础后收到消息“MEMORY STREAM IS NOT EXPANDABLE”
- jquery - 在引导程序中的导航栏上方自动隐藏警报