1. 程式人生 > >關於asp.net mvc JavaScriptResult的一些用法記錄

關於asp.net mvc JavaScriptResult的一些用法記錄

當前系統要做成多語言,採用微軟的resx資原始檔,因為需要js中也要動態建立某些datagrid列,所以目前的做法是將resx檔案讀取之後拼接成js內容然後返回到前臺進行載入,然後使用其中的語言配置,其中問題如下:

1,獲取js內容的方法之前寫到了APIController裡了,應該寫到Controller裡

2,剩餘的什麼了,程式碼如下:

  /// <summary>
    /// 將伺服器端的資原始檔轉換為Javascript程式碼,主要為了在服務端和客戶端之間共享資原始檔。
    /// </summary>
    public sealed class JavascriptResourceResult : JavaScriptResult
    {
        public JavascriptResourceResult(string javascriptObjectName, Type resourceType)
        {
            javascriptObjectName.MustNotNullAndNotWhiteSpace("javascriptObjectName");
            resourceType.MustNotNull("resourceType");


            //JObject retLangObj = new JObject();


            ////宣告資源管理例項物件
            //ResourceManager resManager = new ResourceManager("Resources.Global", global::System.Reflection.Assembly.Load("App_GlobalResources"));


            ////取得當前所選擇的語言別名,並根據該名稱建立CultureInfo資料,並依此獲取多語言資料並生成json返回到前臺使用
            //string currentLang = HttpContext.Current.Request.Cookies["Lang"].Value;
            //CultureInfo ci = CultureInfo.CreateSpecificCulture(currentLang);


            //MemberInfo[] info = resourceType.GetDefaultMembers();
            //FieldInfo[] fields = resourceType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
            //PropertyInfo[] ss = resourceType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
            //for (int i = 2; i < ss.Length; i++)
            //{
            //    string name = ss[i].Name;
            //    string str2 = resManager.GetObject(name, ci).ToString();


            //    retLangObj[name] = str2;


            //    string str = resManager.GetString(name);
            //    string str1 = resManager.GetString("DisplayColor");


            //}


            var namespaceDefinitionString = GetNamespaceDefinitionString(javascriptObjectName);
            var keyValueStrings = GetKeyValueString(resourceType);
 


            this.Script = string.Format("{0};{1} = {{{2}}}", namespaceDefinitionString, javascriptObjectName, keyValueStrings);
        }


        private static string GetNamespaceDefinitionString(string javascriptObjectName)
        {
            var names = javascriptObjectName.Split('.');


            var namespaces = names.Take(names.Length - 1).Select((x, index) =>
            {
                return String.Join(".", names.Take(index + 1).ToArray());
            });


            var sb = new StringBuilder();
            sb.AppendFormat("var {0} = {0} || {{}}", namespaces.First());
            foreach (var item in namespaces.Skip(1))
            {
                sb.AppendFormat("{0} = {0} || {{}}", item);
            }


            return sb.ToString();
        }


        private static string GetKeyValueString(Type resourceType)
        {
            var keyvalues = resourceType
                .GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)
                .Select(x =>
                {
                    return string.Format("{0}: '{1}'", x.Name, x.GetValue(null));
                }).ToArray();


            return String.Join(",", keyvalues);
        }
    }

相關推薦

關於asp.net mvc JavaScriptResult一些用法記錄

當前系統要做成多語言,採用微軟的resx資原始檔,因為需要js中也要動態建立某些datagrid列,所以目前的做法是將resx檔案讀取之後拼接成js內容然後返回到前臺進行載入,然後使用其中的語言配置,其中問題如下: 1,獲取js內容的方法之前寫到了APIController

asp.net mvc中加入log4net記錄錯誤日誌

第一步: 新增並應用Log4net.dll。然後在Web.config檔案中新增下面的配置局 <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandl

windows server 2012 上使用 MSBuild 搭建 asp.net mvc web 自動構建的一些記錄

1、首先在伺服器上安裝好 Git 工具,並加入環境變數 Path 中 2、到 https://www.nuget.org/downloads 下載 nuget.exe,放到任意資料夾,並加入環境變數 Path 中 3、到  https://www.microsoft.co

關於ASP.NET MVC的權限認證的一些總結

filter mode allow 檢查 art 權限 奇怪 dha 可執行 最近在學ASP.NET MVC的權限認證的一些東西,上網搜索了一陣,發現網上的方法大多數是以下幾類: 一、FormsAuthentication.SetAuthCookie(admin.Name,

記錄ASP.NET MVC View 移動版瀏覽的奇怪問題

手機瀏覽器 超鏈接 jquery 記錄 元素 ASP.NET MVC View 中的一段代碼:<span id="span_Id">@Model.ID</span>沒什麽問題吧,瀏覽器瀏覽正常,查看元素為:<span id="span_Id">12345

ASP.NET MVC 排球計分程序 (七)視圖代碼和一些解釋

script wid new post 添加 scrip lar 我們 獲取 Index 視圖 @{ ViewBag.Title = "Index"; } <html> <head> <title>輸

ASP.NET MVC Bundles 用法和說明(打包javascript和css)

http debug模式 尋找 所有 ida jquery-ui content end eas 本文主要介紹了ASP.NET MVC中的新功能Bundles,利用Bundles可以將javascript和css文件打包壓縮,並且可以區分調試和非調試,在調試時不進行壓縮,以

iis 上部署 asp.net mvc 項目的一些註意事項

技術分享 microsoft exe 部署 mvc 格式 註意 如果 oca 1. 發布的網站無法應用web.config配置。 解決方法: 網站的物理路徑文件夾的權限,如果 iis 應用程序池的標識為 ApplicationPoolIdentify ,需要為文件夾添加 I

ASP.NET MVC 使用 Log4net 記錄日誌

例如 gin star date 克隆 htm 下載 字符串轉換 查看 Log4net 介紹 Log4net 是 Apache 下一個開放源碼的項目,它是Log4j 的一個克隆版。我們可以控制日誌信息的輸出目的地。Log4net中定義了多種日誌信息輸出模式。它可以根據需要將

asp.net MVC + EF , Linq的基本用法

top code sum 裏的 頁碼 reac style from sta public ActionResult Index() { NewsEntities news = new NewsEntities();

瞭解ASP.NET MVC幾種ActionResult的本質:JavaScriptResult & JsonResult

在之前的兩篇文章(《EmptyResult & ContentResult》和《FileResult》)我們剖析了EmptyResult、ContentResult和FileResult這三種ActionResult是如何將Action執行的結果響應給客戶端的。本篇文章著重介紹在進行Ajax呼叫中經常

使用VS2017開發ASP.NET MVC釋出到虛擬主機中無法訪問的問題記錄

1. 虛擬主機最高支援到.Net FrameWork 4.7,使用VS2017新建一個ASP.NET FrameWork 4.7應用釋出到FTP之後發現報錯。 查了發現問題在於VS2017編譯器預設為Roslyn,虛擬主機中不支援用Roslyn編譯進行動態編譯。 解決

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(6) 控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作

索引 簡述 今天我們來寫一個控制器基類 主要做登入使用者、許可權認證、日誌記錄等工作 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(4)對前面的一些問題彙總和總結

索引 簡述 今天我們對前3章的問題總個彙總,對一些東西做個簡單的總結,相比大家到第3章發現編輯器報了很多錯誤了,不要擔心 那是正常的,因為有很多類庫我還沒有釋出。 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個

ASP.NET MVC中使用Log4Net進行多種HttpCode日誌的記錄

參考了以下兩篇文章 總體設計 錯誤型別 錯誤入口 處理方法 Controller中的錯誤 (已經考慮到的) 在try-catch中記錄日誌 顯示HttpCode500錯誤檢視 Controller中的錯誤 (未考慮到的) 在繼承Handl

IOC Of Ninject Base On ASP.NET MVC

dex 準備工作 應用 new 引用 cti err art part 說在之前的話 IOC的概念相信大家比較熟悉了,習慣性稱之為依賴註入或控制反轉,園子裏對基於MVC平臺IOC設計模式已經相當多了,但大家都只知道應該怎麽應用一個IOC模式,比如Ninject, Unity

ASP.Net MVC連接MySQL和Code First的使用

config文件 onf tsql .com mysql字符串 spa set web 不同 首先要準備一下的工具作為環境 MySQL Community Server 5.7.x My Workbench 6.3 VS2017 新建一個項目,NetMySQLCodeF

ASP.NET MVC 替換默認的基架模板

不想 esp black 函數返回 als work 相同 bae detail 在學習Asp.net Mvc中,今天第一次聽了基架,哈哈! 常用的首字母縮略詞 CRUD 恰當地傳達了根據數據存儲編寫例程創建、檢索、更新和刪除操作的普通任務。Microsoft 提供由

asp.net mvc 註冊中的郵箱激活功能實現

名稱 work 點擊 rom urn 內容 string 電子郵件 amp 基本流程圖 註冊頁面就不再寫出,現在將發送郵件的代碼粘貼出來 public ActionResult SendEmial() { int

ASP.NET MVC 5 Controllers and Actions

del png asp.net obj into sse ascx stat wan Creating a Controller with IController All controller classes must implemet IController interf