2014-11-24

ASP.NET MVC - 如何讓Form參數內的XML字串綁定到Model

最近在學習MVC,目前有個需求,需要使用者將Form Post到某個Action內,裡面的參數還會有xml文字,整個參數會像底下一樣:
A=123&B=abc&C=<Root><A>123</A><B>abc</B><C>kkk</C><D>iii</D></Root>

其中A與B是普通字串,而C是XML字串

在Visual Studio 2013裡有個好用的功能,可以將XML或JSON字串轉成Class,只要使用選擇性貼上即可。底下就是寫好的一個使用者參數的Model:
public class SendModel
{
    [Required(AllowEmptyStrings = false, ErrorMessage = "{0}不可為空")]
    [StringLength(3, MinimumLength = 3, ErrorMessage = "{0}長度必須為{2}")]
    public string A { get; set; }
 
    [Required(AllowEmptyStrings = false, ErrorMessage = "{0}不可為空")]
    [StringLength(3, MinimumLength = 3, ErrorMessage = "{0}長度必須為{2}")]
    public string B { get; set; }
 
 
    [Required(AllowEmptyStrings = false, ErrorMessage="xml不可為空,請檢查格式是否正確")]
    public SendXmlModel C { get; set; }
 
    //這個類別就是將XML貼上之後所產生的,格式相同就可序列化成字串或反序列化回該類別的物件
    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute("Root", Namespace = "", IsNullable = false)]
    public partial class SendXmlModel {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
        public string D { get; set; }
    }
}


2014-10-06

雲豹200更換前叉油DIY


200豹騎了也四萬多公里了,前叉變得很軟,尤其現在每天需要雙載,稍微一個煞車就點頭,台灣的拉力路面也是對避震非常的有挑戰性!(抱怨一下,每天需要走的汐止明峰街,那路面真他媽的爛...)所以興起了換一下前叉油的念頭。

2014-07-15

偵測檔案使用的編碼是Utf-8或Big5-新版

前一篇文章討論到如何偵測檔案的編碼方式,但由於還是有很小的機會會誤判,心裡總是有疙瘩在,不確定廠商到底會丟怎樣的資料來(廠商的代名詞就是腦X),而且訂單XML內中文字的數量很少,若只有一筆,很可能只有三個中文字而已,於是從utf-8是如何編碼開始研究起。

沒想到規則意外的簡單,因為我不須知道太詳細的細節,只需知道幾個重點:

  1. 只要是0開頭的byte就表示是ascii編碼,也就是0xxxxxxx後面的七碼x相容於傳統ascii編碼
  2. 非ascii編碼,一律以1開頭再接0,並且最少兩個1
  3. 1的數量指出這個字是由幾個byte所組成,如1110xxxxx表示這個字要3個byte
  4. 其後每個子byte都為10開頭
  5. 最多每個字4個byte

偵測檔案使用的編碼是Utf-8或Big5

使用程式處理文字檔,最麻煩的就是要選擇開啟檔案時所採用的編碼方式。在台灣常見的就是utf-8或是big5兩種編碼,只要選錯了,那麼檔案裡面的中文字99.999%以上會變成亂碼或是莫名其妙的中文字。這也是非英語系國家的痛啊!

2014-06-23

如何讓Ubuntu Server在安裝時使用SoftRaid

一般來說,如果要架設Server,最好使用硬體來做Raid,較省資源和穩定。但有時候預算或其他問題,沒辦法使用到硬體的Raid卡來做,那麼使用軟體提供的SoftRaid也很不錯。缺點是較吃CPU資源和效能影響及發生問題時恢復資料的難度較高。但現在電腦的CPU都很強大了,所以在有限的資源下也可考慮看看。

現在網路上比較容易查到的,都是已經裝好Server作業系統,然後教你怎樣設定和加入Raid,但我是全新安裝(或重灌),在做Raid就卡關了是要怎麼把作業系統裝進去啊?

沒關係,現在一步步來。

2014-06-22

[筆記] 解決Ubuntu 14.04 使用SoftRAID或LVM開機出現diskfilter writes are not supported

Ubuntu Server出了新版14.04,剛好最近公司Mail Server掛點,乾脆就重灌成這版吧,比起不熟悉的OpenSUSE,我還是更習慣Ubuntu

使用SoftRAID安裝好後,重開機,但這時畫面卻出現這個:


2014-06-20

Ubuntu 使用 bind9 架設DNS Server

這是寫給自己看的安裝筆記,所以比較簡單。

1. 首先安裝必要套件
sudo apt-get install bind9 bind9-doc dnsutils

2. 進入到/etc/bind目錄,會看到底下目錄結構:

紅框的兩個檔案是我們要修改的。
named.conf.local 裡面可以設定正反解的zone,如果不想改,也可以新增自己喜歡的檔案,但要記得在named.conf裡面include他
named.conf.options 主要在設定dns的一些選項和安全性。
其他的檔案就是預設的一些localhost的正反解相關,這裡我們不用理他沒關係。