如何与正面和背面共享语言资源

时间:2019-04-17 20:08:08

标签: c# asp.net-mvc

我已在遵循此文档的情况下在我的项目中添加了本地化:

https://docs.microsoft.com/en-gb/aspnet/core/fundamentals/localization?view=aspnetcore-2.2

它能按预期工作,但我遇到了问题。有时我需要显示模式窗口(例如,以确认注销请求),但是我还没有找到使用语言资源来处理它的最佳方法。

我尝试使用javascript创建这些模式,但没有找到一种与javascript共享资源文件的干净方法。

我也尝试使用局部视图,但是发现的唯一解决方案是使用Ajax请求从服务器检索视图。乍一看,我以为我的问题已经解决了,但是我意识到,如果无法从服务器中检索到我的视图,我将无法以正确的语言显示错误消息,因为我的javascript无法访问资源文件。 / p>

我想知道什么是最好的进行方法。我希望我的解释很清楚。

谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

该框架提供了一种在视图(this part of the documentation)中使用资源的方法,因此,您可以做的是将modal窗口默认隐藏在html中,并在需要时使用javascript切换其可见性。 / p>

呈现视图时,所有资源字符串将被替换,因此无需进行服务器调用即可获取它们。

是这样的:

视图

@using Microsoft.AspNetCore.Mvc.Localization

@inject IViewLocalizer Localizer

// html of the view

<div id="error_modal" class="modals">
    <span>@Localizer["The error message"]</span>
</div>

使用CSS规则

.modals
{
    visibility: hidden;
}

然后使用javascript显示或隐藏div(仅作为示例,执行此操作的方式取决于您使用的javasript库)。

希望很清楚,这就是您所需要的。