使用JavaScript中的服务器端资源

本文关键字:服务器端 资源 JavaScript 使用 | 更新日期: 2023-09-27 18:01:48

我正在更新我的ASP.NET项目,以便使用更多的JavaScript和AJAX。我已经重构了HTML的一些部分,以便使用JavaScript创建它们,但现在我不能再使用本地资源文件的值了。

我的项目结构是,每个页面/usercontrol都有自己的一组本地资源和一组.js文件。

有没有一个简单/优雅的解决方案来使用JavaScript中的本地资源?最好我希望看到一些东西,它采用myfile.js文件,通过查看当前语言对其进行解析,并输出一些myfile.en.js

更新

我想如何工作:

<script src="../message.js"></script>
function showMessage(){
alert(GetLocalResource("AlertMessage"));
}

使用JavaScript中的服务器端资源

是。创建一个ControllerApiController,用于从文件夹或resx文件中读取资源。

要读取resx文件,请使用ResourceManager

网上有很多关于一般结构的例子。像这样:在asp-mvc中显示数据库中的图像。当然,您不仅可以将其用于图像,还可以使用任何类型的文件。

你可以按照你想要的方式映射一个传入的参数,比如filename,如果需要的话,你可以对它进行后处理来替换。你还可以设置一些HTTP头来处理缓存。

在我的案例中,我发现将RESX文件转换为JSON文件,然后在客户端JavaScript中加载它们效果很好。

由于RESX是XML,因此使用LINQ to XML可以将每个节点转换为一个键,并将每个值转换为键值:

{ "myLabel": "hello world!" }

现在的问题是为用户的文化加载正确的资源。如果您使用像RESX这样的约定,并且文件被称为像MyResources.en-US.json这样,如果您使用当前用户的区域性编写cookie,则只需将其连接如下:"MyResources." + cultureCookieValue + ".json"

最后,您可以使用jQuery加载整个资源:

$.getJSON("/JsonResources/MyResources." + cultureCookieValue + .json").done(function(resources) {
  var myLabel = resources.myLabel;
});

这只是一个想法。现在,如果你开发它,你可以创建一些抽象,这样你的客户端代码就可以使用这种方法访问这些资源。

建议:您可以使用MSBuild在生成时转换RESX!

这里有一个关于如何编写自己的Http处理程序以动态创建缩小的JavaScript的示例。也许你可以用翻译选项来扩展它,不仅可以输出缩小的文件,还可以输出翻译的文件。

http://weboptimizer.codeplex.com/