ASP.NET MVVM結構--之views 和 controller 訪問本地資源文件

昨天晚上又犯了老毛病,不知道其他碼農是否會有同樣的毛病(= . =|||),就是每次一遇到棘手的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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章