使用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"));
}
是。创建一个Controller
或ApiController
,用于从文件夹或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/