gpt4 book ai didi

asp.net - 使用 javascript 文件中的 ASP.NET 资源字符串

转载 作者:行者123 更新时间:2023-12-02 23:44:05 24 4
gpt4 key购买 nike

如何将 resx 资源字符串转换为存储在 .js 文件中的 JavaScript 代码?

如果您的 JavaScript 位于标记中的脚本 block 中,则可以使用以下语法:

<%$Resources:Resource, FieldName %>

它会在渲染页面时解析资源值...不幸的是,只有当 javascript 出现在页面正文中时才会解析。在 <script> 标记中引用的外部 .js 文件中,这些服务器标记显然永远不会被解析。

我不想编写 ScriptService 来返回这些资源或类似的东西,因为它们在页面呈现后不会改变,所以拥有事件的东西是一种浪费。

一种可能是编写一个 ashx 处理程序并将 <script> 标记指向该处理程序,但我仍然不确定如何在 .js 文件中读取并解析任何服务器标记,然后再将文本流式传输到客户端。我可以运行一行代码来完成与 ASP.NET 解析器类似的任务吗?

或者有人有其他建议吗?

最佳答案

这是我目前的解决方案。我确信将来我需要使其更加通用......但到目前为止这还不错。

using System.Collections;
using System.Linq;
using System.Resources;
using System.Web.Mvc;
using System.Web.Script.Serialization;

public class ResourcesController : Controller
{
private static readonly JavaScriptSerializer Serializer = new JavaScriptSerializer();

public ActionResult GetResourcesJavaScript(string resxFileName)
{
var resourceDictionary = new ResXResourceReader(Server.MapPath("~/App_GlobalResources/" + resxFileName + ".resx"))
.Cast<DictionaryEntry>()
.ToDictionary(entry => entry.Key.ToString(), entry => entry.Value.ToString());
var json = Serializer.Serialize(resourceDictionary);
var javaScript = string.Format("window.Resources = window.Resources || {{}}; window.Resources.{0} = {1};", resxFileName, json);

return JavaScript(javaScript);
}

}

// In the RegisterRoutes method in Global.asax:
routes.MapRoute("Resources", "resources/{resxFileName}.js", new { controller = "Resources", action = "GetResourcesJavaScript" });

所以我能做到

<script src="/resources/Foo.js"></script>

然后我的脚本可以引用例如window.Resources.Foo.Bar 并获取一个字符串。

关于asp.net - 使用 javascript 文件中的 ASP.NET 资源字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/940769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com