在JavaScript中使用服务器端资源

时间:2014-05-05 12:48:57

标签: c# javascript asp.net asp.net-mvc

我正在更新我的ASP.NET项目以使用更多的JavaScript和AJAX。我重构了部分HTML,以便用JavaScript创建,但现在我无法再使用本地资源文件的值了。

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

在JavaScript中使用本地资源是否有简单/优雅的解决方案? 我希望看到一些带有myfile.js文件的东西,通过查看当前语言来解析它,并输出一些内容myfile.en.js

更新

我想怎么工作:

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

3 个答案:

答案 0 :(得分:2)

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

要从resx文件中读取,请使用ResourceManager

一般结构在线有很多例子。像这样:Display image from database in asp mvc。当然,您不仅可以将它用于图像,还可以用于任何类型的文件。

您可以按照您想要的方式映射传入参数,例如filename,如果需要,您可以对其进行后期处理以替换内容。您还可以设置一些HTTP标头来处理缓存。

答案 1 :(得分:2)

就我而言,我发现将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!

答案 2 :(得分:0)

这是一个关于如何编写自己的Http Handler来动态创建缩小JavaScript的示例。也许您可以通过翻译选项扩展它,并且不仅可以缩小文档,还可以输出翻译文件。

http://weboptimizer.codeplex.com/