昨天晚上又犯了老毛病,不知道其他码农是否会有同样的毛病(= . =|||),就是每次一遇到棘手的bug,就会憋渴憋尿的扎进去研究,每次这样解决完问题后连跑着去厕所都不敢了。郁闷,其实这样效率反而不高,自己很清楚,对身体不好而且长时间这样盯着思路也会堵塞,每次都对自己说不能这样不能这样,而每次又这样又这样,madan,记性给dog叼了么!!好吧,还是要提醒一下自己下次不能这样的,身体是革命的本钱捏。。。好了,下面ASP.NET MVVM框架中views 和controller访问本地资源文件的方法。
1、资源文件(App_GlobalResources/Resource.resx)
在开发基于资源 app 时,您必须在具有.txt或.restext扩展的文本文件、或是具有.resx 扩展名的XML文件来存储资源信息。资源文件生成器 (resgen.exe)创建一个二进制.resources 文件,可以嵌入到附属程序集中。
理想情况下,您应创建资源您的应用程序支持的每种语言的或至少每种语言的有意义的子集。二进制 .resources 文件名称遵循命名basename约定。cultureName.resources,basename这app的名称或选件类的名称,根据详细程度要。CultureInfo.Name属性来确定cultureName。应命名为basenameapp 的默认值区域性的资源.resources。
例如,假设程序集具有多个资源在一个基名称MyResources 的资源文件。 这些资源文件应具有名称 (如日本 (日文) 区域性的区域性德语的 MyResources.ja-JP.resources,简化的中文区域性的 MyResources.de.resources,比利时法语 () 区域性的 MyResources.zh-CHS.resources 和 MyResources.fr-BE.resources。默认资源文件应命名为 MyResources.resources。区域性特定的资源文件通常打包在每种区域性的附属程序集内。在应用程序的主程序集应嵌入默认值资源文件。
2、Views中访问ResourceTest.resx中的资源
注意:引用了命名空间,使用的是razor视图引擎
@{
Layout = null;
}
@using Resources
@RenderBody()
<div>
<ul>
<li>@ResourceTest.name</li>
<li>@ResourceTest.age</li>
<li>@ResourceTest.gender</li>
</ul>
</div>
3、在javascript中访问资源文件ResourceTest.resx
js文件中不能直接引用命名空间来访问本地资源文件,因为该资源文件编译在后台。但是我们可以通过controller来访问,再在js文件中使用ajax调用controller。
3.1 Controller文件(ResourceController.cs)
ResourceManager Object
namespace StoreTasksWebRole.Controllers
{
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Results;
[HttpGet]
public JsonResult<Dictionary<string, string>> Get()
{
var resourceSet = Resources.ResourceTest.ResourceManager
.GetResourceSet(CultureInfo.CurrentUICulture, true, true)
.Cast<DictionaryEntry>()
.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString());
return Json(resourceSet);
}
}
}
3.2 js文件
<pre class="javascript" name="code">$.ajax({
cache: false,
url: '/' + culture +'/api/ResourceTest?v=' + (new Date().getTime()),
dataType: 'json',
method: "GET",
success: function (data) {
StoreTask.Resources = data;
var name = StoreTask.Resources.name;
}
});
这样天,看到都困了== ZZZZ