Browse by Tags

ViewBag dynamic 特性導致無法使用 LINQ 語法
寫 ASP.NET MVC CSHTML 時,我很習慣用 ViewBag 將變數從 Controller 傳到 View 端,只是簡單傳遞幾個字串、數值,為此大費周章宣告 Model 型別有點殺雞用牛刀。我們都知道 ViewBag 是一個 dynamic 型別,而 dynamic 型別的屬性、方法也會被視為 dynamic,編譯階段不檢查,執行階段見真章。 不過,最近學到一件事:一旦函式參數傳入 dynamic,其傳回值也會被視為 dynamic,而此時將無法使用 Lambda 運算式 。 來看下面這個例子...
Posted 26 August 2017 11:37 AMJeffrey | 1 comment(s) 3,137
Filed under: ,
小技巧-使用匿名型別快速捏出指定JSON格式
同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端: { "rows" : { "row" : [ { "City" : "台北市" , "Area" : "文山區" , "ZIP" : "116" } ] } } 先前介紹過 JObject 結合 dynamic 的 花式玩法 可以快速達成目標: static void...
Posted 25 August 2017 11:44 PMJeffrey | with no comments 6,819
Filed under: ,
C# 連線 HTTPS 網站發生驗證失敗導致基礎連接已關閉
某台透過 .NET WebClient 物件爬網頁抓資料排程忽然出現: 基礎連接已關閉: 傳送時發生未預期的錯誤。 ---> System.IO.IOException: 驗證失敗,因為遠端群體已經關閉傳輸資料流。 The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the...
Json.NET 日期型別時區問題之終極解法
一直以來常被 JSON 日期序列化時區問題困擾,問題主要發生於從資料庫查詢日期欄位,轉為 .NET DateTime 型別時其 Kind 屬性為 Unspecified,而以 DateTime.Now、DateTime.Today 取得的日期物件,Kind 則為 Local,二者不一致可能導致前端出現 8 小時時差。為解決問題,先前想到的做法是先宣告 JsonConvert.DefaultSettings DateTimeZoneHandling = DateTimeZoneHandling.Utc...
Posted 08 August 2017 11:56 PMJeffrey | with no comments 3,559
Filed under: ,
方法多載(Method Overloading)與 dynamic
方法 多載(Overloading) 是指多個名稱相同但參數個數或型別不同的方法,編譯器依傳入參數的個數、型別與順序決定使用哪一個方法。概念上多載讓方法變得更彈性,能接受不同參數組合,符合更多應用情境。舉個常見的例子,Convert.ToByte() 可傳入 int, short, string, float, double, decimal, char… 等輸入值,將其轉成 byte,傳入 string 時還能指定 16 進位(fromBase)或 IFormatProvider。 我有個根深蒂固的觀念...
Posted 03 August 2017 05:54 PMJeffrey | with no comments 3,532
Filed under:
程式範例-使用 Json.NET 將 Key/Value 陣列轉為物件屬性
專案遇到的需求:程式接收來自外界的 JSON 資料,物件之各屬性內容以 KeyValuePair<string, string> 陣列儲存,序列化結果如下: { "modType" : [ { "Key" : "I" , "Value" : "獨立模組" }, { "Key" : "J" , "Value" : "聯合模組"...
Posted 02 August 2017 10:50 PMJeffrey | with no comments 5,084
Filed under: ,
擴充方法參數傳入 dynamic 型別出錯
呼叫擴充方法時傳入 dynamic 型別參數,發生以下錯誤: 'Blah' has no applicable method named 'ExtMethod' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling...
Posted 31 July 2017 09:55 PMJeffrey | with no comments 2,469
Filed under:
筆記:C# 6.0 自動實作屬性初始化與運算式主體定義
專案裡有個在父類別宣告 virtual List<string> MyProp { get; } = new List<string>(); ,接著在子類別 override MyProp, Visual Studio 2017 自動帶出 List<string> MyProp => base.MyProp; 。(術語為 Expression Body Definition 運算式主體定義) 子類別要傳回 "Prod1","Prod2"...
Posted 30 July 2017 12:31 PMJeffrey | with no comments 3,835
Filed under:
COALESCE 發生字元設定不符合錯誤
同事報案,Dapper 查詢 ORACLE 時使用 COALESCE() 遇到 ORA-12704: character set mismatch(字元設定不符) 錯誤。 我用以下程式成功重現問題:(jefftest2.t 欄位為 NVARCHAR2) static void Main( string [] args) { using (var cn = new OracleConnection(csStr)) { var list = cn.Query( "select 1 from...
Posted 18 July 2017 10:35 PMJeffrey | with no comments 2,359
Filed under: , ,
CODE-使用 C# 批次列印 PDF 檔案
專案遇到批次列印 PDF 檔需求。 Acrobat Reader 或 Foxit Reader 等常用 PDF 軟體本身就具備傳參數直接列印功能,例如 Acrobat Reader 直接列印 PDF 之語法為:AcroRd32.exe /p /h "pdf路徑" "印表機名稱"(印表機名稱省略時由預設印表機輸出) 基於以上資訊,最直覺的做法是找出 Acrobat Reader EXE 檔(AcroRd32.exe)路徑,在 .NET 程式透過 Process...
Posted 14 July 2017 11:59 PMJeffrey | with no comments 8,758
Filed under: ,
CODE - 數字轉英文 C# 函式庫
專案遇上數字轉成英文的需求,例如:1234 需轉為 one thousand two hundred thirty four。 網路上有許多解決方案,程式範例、現成函式庫都有,選擇眾多之下,透過 NuGet 即裝即用才是王道。我找到一個,在 NuGet 搜尋 NUT,第一筆 Nut, Number To Text Converter & Money To Text Converter: 程式為 Open Source, 使用說明與原始碼在 Github 上: https://github...
Posted 30 June 2017 11:39 PMJeffrey | with no comments 4,970
Filed under: ,
筆記-使用 Dns.GetHostEntry 解析 IP 位址
某排程使用以下程式碼產生 IEndPoint 以建立 Socket: IPEndPoint pEndPoint = new IPEndPoint(Dns.GetHostEntry(remoteHost).AddressList[0], remotePort); 其中用了 Dns.GetHostEntry(),好處是不管 remoteHost 傳入的是主機名稱還是 IP,一律可轉成 IPAddress。 排程在正式及測試環境運作多時,今天將程式移到另一網段機器上執行,remoteHost 為 IP...
Posted 21 June 2017 10:30 PMJeffrey | with no comments 4,250
Filed under: ,
CSV 轉換利器-ServiceStack.Text
做專案免不了遇到匯出或讀取 CSV 的需求,將物件轉成逗號分隔字串看似小菜一碟,用 C# 串字串也能搞定,但魔鬼在細節裡:字串值如包含逗號就要用雙引號包夾,遇到雙引號要置換成兩個雙引號,如果字串內容有換行符號更是讀取識別時的一大挑戰… 不管是匯出或解析 CSV 都得費不少力氣。最近發現一個處理 CSV 的強大元件-ServiceStack.Text 的 CsvSerializer! ServiceStack 是一套用於快速打造 SOA 服務的 Framework 工具組(可取代 WCF、WebAPI...
Posted 13 May 2017 09:27 AMJeffrey | with no comments 11,741
Filed under: ,
使用 WebClient FTP 上傳檔案發生 553 錯誤
在 .NET 要 FTP 上傳檔案,最精簡有效的做法莫過於 使用 WebClient ,例如: using System; using System.IO; using System.Net; public class CSharpLab { public static void Test() { string userName = "ftpAccount" ; string password = "ftpPassword" ; string uploadUrl...
Posted 03 May 2017 06:44 AMJeffrey | with no comments 3,280
Filed under:
MS OracleClient 改用 ODP.NET 之數字型別差異
System.Data.OracleClient 被微軟宣告為 過時不建議使用 ,是你知道我知道連獨眼龍都知道的事,硬要繼續用甚至會有 效能懲罰 。所以在維護舊專案時,看到還在用 System.Data.OracleClient 的程式,我都會順手換成 Managed ODP.NET 。(若為 .NET 3.5 平台則只能用 Unmanaged ODP.NET) 近日踩到小鐵釘一根。 如下圖,程式原本使用 System.Data.OracleClient,執行正常: 改 using Oracle...
Posted 21 April 2017 07:25 AMJeffrey | with no comments 3,730
Filed under: ,
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<January 2018>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication