發表文章

目前顯示的是 六月, 2014的文章

[MVC] 自訂RadioButtonList

MVC若要使用Radio Button,預設的HtmlHelper只有RadioButtonFor方法可以使用,這是單一個Radio Button,所以若要呈現5個按鈕就要呼叫5次,或使用迴圈巡覽資料集來叫用。而針對顯示的文字及Html也須另外撰寫。針對這種寫了會令人在維護時眼花瞭亂的程式,最好的方式還是寫了一個Helper來解決。

改善前的作法 @foreach (var item in DataUtility.GetDatas()) { <label class="radio"> @Html.RadioButtonFor(model => model.ProductId, item.ProductId) @Html.DisplayFor(model => item.ProductName) </label> }

[Expression Tree] MSDN學習系列 3-使用運算式樹狀結構建置動態查詢

本系列的最後一篇文章,此篇要講的是如何使用運算式樹狀架構來建立動態 (Dynamic) 的 LINQ 查詢,並在執行時期產生對應的查詢方法。在開始先來講為何需要動態查詢? 假設我們有一個GridView呈現產品清單,但要提供使用者直接在每個欄位的標題點選作排序、飾選的功能。若要依使用者點選的欄位來查詢的話,程式需依欄位名稱來各別寫Where或Orderby,如下程式
private void TraditionQuery() { string sortColumn = "ProductName"; string filterColumn = "CategoryName"; string filterValue = "HTC"; IQueryable<ProductModel> data = ProductModel.GetDatas(); switch (sortColumn) { case "CategoryName": data = data.OrderBy(m => m.CategoryName); break; case "ProductName": data = data.OrderBy(m => m.ProductName); break; } switch (filterColumn) { case "CategoryName": data = data.Where(m => m.CategoryName == filterValue); break; case "ProductName": data = data.Where(m => m.ProductName == filterValue); break; } }
目前只針對2個欄位作…

[多國語系]-前端驗證測試記錄-後續作法

圖片
針對前篇測試,在參考相關的文章有提到:
Culture 屬性: 負責判定與文化特性相關功能的結果 (例如: 日期、數字和貨幣格式等)。
UICulture 屬性: 負責覺得要為網頁載入哪一國的資源檔。
根據以上的特性,程式調整如下:
1.南非語系維持en-ZA不變 針對英文語系的處理,在設定CurrentCulture時,設定成en,而設定CurrentUICulture則依使用者設定的語系,如下程式判斷en-開頭則取en來使用。
void MvcApplication_BeginRequest(object sender, EventArgs e) { if (CurrentCultureName.StartsWith("en-")) System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en"); else System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(CurrentCultureName); System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(CurrentCultureName); }

[多國語系] MVC ViewModel自動載入語系資源-驗證訊息

圖片
繼前一篇[多國語系] MVC ViewModel自動載入語系資源,此篇要講的是把一些常用的驗證自動加上語系,例:Required、Range...等。在基本的情況下我們在Property冠上Required,只要使用者未填值下按下Submit就會出現內建的錯誤訊息,如下:
中文英文
而要加上自訂的語系的話則需要再指定ErrorMessageResourceName及ErrorMessageResourceType

改善目標不要設定語系名稱及語系型別 自動為驗證Property跟資源檔作結合

[Expression Tree] MSDN學習系列 2-修改運算式樹狀架構

圖片
繼上篇運算式樹狀架構,此篇要講的是如何修改運算式樹狀架構,預設的情形下,運算式樹狀架構是不可直接修改的.....嗯~~~有看沒有懂…對吧..XD,下列程式碼,就是一個完整的樹狀結構,但你不可以直接去異動他任一節點,例如:將大於換小於、and換成or
Expression<Func<string, bool>> expr = name => name.Length > 10 && name.StartsWith("G");

[Web API] 如何使用Route Debugger對Routing偵錯

圖片
今天在測試Web Routing的設定時,感覺大海撈針…..找不出錯誤到底在哪?幸好MSDN剛好有篇文章在寫這個,順便記錄一下以免日後忘了..。
1.從Nuget加入 WebApiRouteDebuggerPM> Install-Package WebApiRouteDebugger 2.裝完後須調整設定 瀏覽 :http://localhostxxx/rd,會出錯下圖組件錯誤


[多國語系] MVC ViewModel自動載入語系資源

圖片
一般而言我們Mode的屬性若沒冠上[Display]的話,View會以該Property的名稱來顯示,而加上Display後,若需要加上語系的話,除了設定Name還要再多設定ResourceType,如下:

DRY原則     上方的程式碼整個看起來就是令人眼花瞭亂,每個Property要冠上Display及設定ResourceType,且差異的部份只Name的指定,程式碼重複的部分一大堆...。根據DIY的原則....不不不..是DRY的原則,不要一直重覆你自已,我們需要更乾淨的作法。
改善目標 為了保持較乾淨的類別及加速日後的開發與維護,列出以下幾點需求:
不要設定語系名稱及語系型別每個屬性不要冠上[Display]自動為Model的Property跟資源檔作結合

[Expression Tree] MSDN學習系列 1-運算式樹狀架構

圖片
最近參考一些較知名的Library,例:Automapper、DynamicQuery..等等,都有用到大量的Expression來作動態查詢,由於Expression認識的不夠深,以致在擷取某些程式碼來修改時都覺得很吃力......=.=。而這兩天剛好看到msdn有提供一系列的文章,想說將它整個練習一遍,並將所理解的記錄下來 ps:其實是轉化自己較容易懂的語言XD。

什麼是Expression Tree?
就是將程式碼當作樹狀結構的資料,並可以動態修改Runtime的程式碼、動態查詢及取得程式碼中的相關資訊。

[多國語系]-前端驗證測試記錄

圖片
測試目的    讓前端通過多國語系的數值與日期驗證,參考文章1文章2後,另作一個測試記錄,ps:結果預告:失敗
1.Nuget加入套件:jQuery.Validation.Globalize2.撰寫一個共用方法取得目前的語系名稱

3.引用相關Script ps:需照順序 紅框處為以語系加入對應的js

4.設定前端global的文化為目前的語系


上述步驟完成後,開始測試相關案例,以中文、英文及南非三個為語系選項
1.日期-格式化-d:為會依據不同的語系呈現yyyy/MMM/dd or dd/MM/yyyy
測試結果—>OK
2.日期-格式化-yyyy-MM-dd:此為配合html5的日期格式
測試結果—>Fail
原因:yyyy-MM-dd格式無法通過多國語系的驗證

解決方法:擴充date驗證方法,使用統一格式yyyy-MM-dd的方式驗證

[TechEd-2014-North-America] Visual Studio Power User: Tips and Tricks

圖片
針對此Session,個人覺得常用的一些實用技巧作memo
1.方案資料夾-將範圍設定在此
beforeafter