【问题标题】:How to get a string from .resx file to a .js file [closed]如何从.resx文件获取字符串到.js文件[关闭]
【发布时间】:2014-10-23 06:01:44
【问题描述】:

我想以两种不同的语言显示警报消息。 我正在使用 asp.net App_GlobalResources。我可以在我的 script.js 文件中使用它吗?

【问题讨论】:

  • 如果不使用Hidden Field 或包含在服务器端生成的.resx 内容的JavaScript file,您将无法访问.resx 文件,请尝试this 方式。

标签: javascript asp.net resx app-globalresources


【解决方案1】:

您不能从 javascript 文件直接调用 RESX 文件中的资源。

但是,您可以创建一个局部视图(如果您使用的是 MVC),您可以从中访问所有这些资源。此后,您可以将该部分内容包含在您的页面中。

例如,你可以做一个部分,你会:

<script>

var Resources = {

  Name: '@Resources.tags.Name',
  Surname: '@Resources.tags.Surname',

};

</script>

在此之后,您可以将此页面包含在您需要的页面中,并使用以下方法从 javascript 访问这些资源:

Resources.Name

如果您不使用 MVC,请告诉我在 ASP.NET 中寻找它应该完成的方式。

如果你有任何疑问,请说出来。

对于网络表单

如果您使用 WebForms,您可以使用用户控件,您可以在其中配置要在页面中注入的 javascript。

然后,在您的页面中包含该用户控件(最好是主控件,以使其在您的所有网站上可用),您将能够访问它。

用户控件看起来是这样的:

public partial class resources : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        LiteralControl jsResource = new LiteralControl();
        jsResource.Text = "<script type=\"text/javascript\">";

        jsResource.Text += "var Resources = {";

        jsResource.Text += "Name: '" + Resources.Resource.Name + "',";
        jsResource.Text += "Surname: '" + Resources.Resource.Surname + "',";
        jsResource.Text += "};";

        jsResource.Text += "</script>";
        Page.Header.Controls.Add(jsResource);

    }
}

然后您将在您的页面中包含该控件:

<uc1:resources runat="server" ID="resources" />

您可以通过这样做简单地访问您的 javascript:

<script>
    alert(Resources.Name);
    alert(Resources.Surname);
</script>

【讨论】:

  • 嗨,Jesús María,我没有使用 MVC。提前致谢
  • 我想从 .js 文件本身访问它。因为我在这个脚本文件中有许多警报消息。我想根据上下文用英语/德语显示它们。我的问题是,如果我将这些消息放在 resx 文件中,并通过给出 resx 文件的名称和条目的“名称”,我可以在 .js 本身中检索“值”吗??。
  • 我想出的唯一技巧是您可以从服务器生成该 js 并将其发送到客户端。除此之外,我不知道有任何其他方式可以从您的 js 文件中访问您的资源。很抱歉没有提供更多帮助。
【解决方案2】:

一个快速的方法是您可以提前在 aspx 文件中设置 Javascript 变量值。

<script type="text/javascript">
    var alertMessage = '<%=Resources.YourResourceFile.alertMessage%>';
    ...
    ...
    alert(alertMessage);
</script>

这将在 alertMessage 变量中呈现资源值,您可以在任何需要的地方使用它。

--
您也可以使用它访问客户端的所有资源文件变量

<script type="text/javascript">
    var resources_en = {
        welcome_en : '<%= Resources.testResources_en.Welcome %>'
    }
    alert(welcome_en);
</script>

将所有需要的资源变量添加到resources_en,以便在客户端访问它们。

【讨论】:

  • 我想从 .js 文件本身访问它。因为我在这个脚本文件中有许多警报消息。我想根据上下文用英语/德语显示它们。我的问题是,如果我将这些消息放在 resx 文件中,并通过给出 resx 文件的名称和条目的“名称”,我可以在 .js 本身中检索“值”吗??。
【解决方案3】:

试试这个:

很简单

<script type="text/javascript">
    var resources_en = {
        welcome_en : '<%= HttpContext.GetGlobalResourceObject("ResourceFileName", "yourMsg") %>';
    }
    alert(welcome_en);
</script>

【讨论】:

  • 这就是你做的事情。问题是一个外部 javascript 文件。
【解决方案4】:

它看起来像这样

 document.getElementById("btnAdd").value = '@Resources.Admin.AddAdmin';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2023-03-07
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多