【问题标题】:How to call resource file message from javascript?如何从javascript调用资源文件消息?
【发布时间】:2021-01-13 06:11:33
【问题描述】:

我有英文和日文的资源文件,所以我的网站转成日文需要显示和英文一样的日文消息,所以需要在java脚本中动态显示消息。

谢谢。

【问题讨论】:

  • 您能澄清一下您的问题吗? ASP.NET 允许您使用 WebForms、Razor 等创建无头(无 UI)API 和 Web 应用程序,或者您使用可以通过 Razor 或通过使用 AJAX 与 API 方法进行通信的 Angular 之类的东西。你提到的资源文件是什么?这是一个实际的 .NET 资源,还是 Javascript 中的东西?
  • 我在普通的 c# asp.net web 表单中使用它,就像在服务器端我们声明标签文本是我必须在 javascript 中调用的文本值。

标签: javascript c# asp.net


【解决方案1】:

您可以将 resources.resx 添加到您的项目中,并在通用控制器中编写以下函数。


#if !DEBUG
        [OutputCache(Duration = 24 * 60 * 60)]
#endif
        [AllowAnonymous]
        public ActionResult ResourcesForJavascript()
        {
            try
            {
                var resourceSet = JsResources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
                var resourceDictionary = resourceSet
                                .Cast<DictionaryEntry>()
                                .ToDictionary(entry => entry.Key.ToString(), entry => entry.Value.ToString());
                var json = JsonConvert.SerializeObject(resourceDictionary);
                var javaScript = $"window.Resources = window.Resources || {{}}; window.Resources.resources = {json};";
                return JavaScript(javaScript);
            }
            catch (Exception ex)
            {
                WebExceptionHelper.FillModelStateOrTempDataWithExceptionMessages(ex, ModelState, TempData);
                return null;
            }
        }

并在_Layout.cshtml中如下调用

<script type="text/javascript" src="@Url.Action("ResourcesForJavascript", "CommonActions")"></script>

【讨论】:

    【解决方案2】:

    要使用资源文件消息,您需要在相关视图上注入定位。 示例:假设您有一个名为 abc.cshtml 的视图,并且您希望在单击按钮时显示来自资源文件的警报消息

    查看:abc.cshtml

    @using Microsoft.AspNetCore.Mvc.Localization
    @inject IViewLocalizer Localizer
    

    在脚本部分

    <script type="text/javascript">
    function callOnButtonClick(){
    alert('@Localizer["Hello message from resource"]');
    }
    </script>
    

    【讨论】:

    • 不在 mvc 中,需要 c# asp.net 的解决方案。
    • @pooja ASP.NET 是 MVC,它是 Web 表单,它是 WebAPI。也许您只以一种形式使用它,但您可以看到许多其他形式。这就是为什么指定您正在使用的 ASP.NET 的形式很重要的原因,尤其是当 WebForms 不是人们使用它的最常用方式时。
    • @pooja 请说明您使用的是 Asp.net Webforms、MVC、Razor pages、Core MVC 中的哪一个?
    • 我在 vb 和 c# 中使用 aps.net 网络表单。
    猜你喜欢
    • 2022-10-13
    • 2014-09-07
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多