使用jQuery傳遞Array

之前寫過一篇善用JavaScriptSerializer處理JSON資料,這次要傳遞的資料比較簡單,不是string就是List< string>,想當然爾會直覺地在前端用Array處理~方便咩。

JavaScript的Array長這樣
var myList = new Array();
最常見的用法就是把網頁上表單形式的排列資料,依所需取出以組合成陣列,
像是把table裡面每個的id值取出來
$('#myTable  tr').each(function () {
     var myId = $(this).attr('id');
     myList.push( myId  );
})
接著用$.post把資料往後送(我用MVC所以會有個Action接收)
$.post('myController/myAction', { json1: $.trim($('#textbox1').val()), json2: myList }, null, "json");

myAction如下
[HttpPost]
public JsonResult  myAction (string  json1, List< string>   json2)
{
     // do something
}
經過反覆檢驗,myList的確有值但json2總是null
解決辦法是traditional設為true,寫法有以下二種

● $.ajax設定traditional: true
$.ajax({
    type: "POST",
    url: 'myController/myAction',
    data: { json1: $.trim($('#textbox1').val()), json2: myList },
    null,
    dataType: "json",
    traditional: true
    // traditional 改為 ture .NET 才能成功接收陣列
});

● $.post傳值必須使用jQuery.param
var myObject = { json1: $.trim($('#textbox1').val()), json2: myList };
$.post('myController/myAction', $.param(myObject, true), null, "json");

參考資料
jQuery.param()
How can I post an array of string to ASP.NET MVC Controller without a form?

台北機廠巡禮

以前採買部門零食爾偶爾經過市民大道五段,都會對佔地廣袤卻無人出入的台北機廠感到好奇,這次參訪才得知原來人家一直都有在運作啦,我一直以為是廢墟XD

有這次巡禮,是因為都更後機廠將會搬遷至桃園富岡,搬遷並不會100 %保留原貌,故舉辦了連續幾周的巡禮讓民眾瞻仰下將消失的台北機廠。

別看走在前頭的人不多,人數多到直接加開第二梯次,第一梯次就破百人@_@


可能我參加巡禮首周的早上梯次(巡禮活動第一批),個人覺得導覽沒有很流暢,不過帶我們的組長人超好,知道我們聽的時候來不及拍照,最終還是應我們幾個死小孩的要求陪著再走一遭>//////<
因此建議想去巡禮的朋友,一旦發現導覽人員速度頗快,絕對要抓緊時間拍,因為很多地區是不給你自由晃的~畢竟機廠重地,而且機廠營運中..是有在辦公滴!

機廠耶機廠耶~可以走進去耶\(  ^ Q^)/ 



每個零件都有它的價值,別小看這些細如髮絲的紋路,磨光光就表示要退休啦!

退休就先丟這~


自強號界的老伯伯


8月就要搬走~以後不叫台北機廠T__T
泥看看,人家桃園有機場又有機廠XDD

導覽最後一站,則是常登上新聞,讓大家覺得台鐵員工很好命的澡堂  <( ̄oo, ̄)/ 

澡堂還在服役,這些衣服都是真的,還有吊嘎說XDD



靠.....人超多...

澡堂外部


澡堂通風窗有個可愛的名稱"虎耳"
礙於機廠人員緊迫盯人=..=|||  只能墊高腳勉強用很偏的角度拍拍嘞


101也入鏡的場景令人想到四四南村,可惜的是機廠這的角度將不復見

組長說這是巴洛克風





人工打卡也有防作弊( ̄口 ̄)!!







死觀光客一定要跟識別證合影!會回收給下梯次人員說

這裡也有防空洞捏


喔對了,如果跟piggy一樣只能假日參加,免報名~直接到台北機廠大門就有人招呼你進去嚕
參展資訊請以台鐵局官網為準:Fun暑假,臺北機廠文化巡禮

New <%: %> Syntax for HTML Encoding

依據 ScottGu先生文章,釐清新語法之觀念

●HTML Encoding
●New <%: %> Code Nugget Syntax
為了方便開發者快速檢視自己的專案並修改,新的語法採<%:  %>,它的樣子非常類似<%= %>,同樣能render output,只是新語法會自動encode

舊版寫法要多一道Encode的手續




新版寫法會自動處理~寫來就比較簡潔





●Avoiding Double Encoding
為了避免重複Encoding,可以一律採用新語法,它會自動判斷是否需要Encode
例如Html.TextBoxFor的傳回值類型是System.Web.Mvc.MvcHtmlString,無須再Encoding

System.Web.Mvc.MvcHtmlString
來源參考:MvcHtmlString
說明:表示不應該再次編碼的 HTML 編碼字串。


●Scaffolding ASP.NET MVC 2 Views
透過VS2010的Scaffold Template為例子,展現出現在的View Template都用新語法


●Summary
新語法的好處有
1. 簡化程式,可輕易檢查/驗證網站中的HTML都有正確的encoding
2. 協助應用程式免於XSS(cross-site script injection) 和 HTML injection攻擊


參考文章
1. New <%: %> Syntax for HTML Encoding Output in ASP.NET 4 (and ASP.NET MVC 2)
2. Html Encoding Code Blocks With ASP.NET 4