隨著前端處理的需求越來越高和前端框架的進化,前端變的更加容易,並且給更好的使用者體驗,身為開發者通常都需要使用到AJAX的技術,避免使用者需要一直切換和刷新頁面。
Mvc裡面提供了非常好框架,讓要回傳JSON變的非常方便,但是有些地方做的還是有點不夠好。
因此,這一篇將會介紹Mvc處理不好的地方和如何修正的概念內容,下一篇在介紹如何實作。
內建Mvc所使用的json 序列化物件效能並不是太好,WebAPI意識到這個問題,因此WebAPI使用的就是比較受歡迎的JSON .Net。為了避免效能問題,和一些等一下介紹的問題,這邊將會介紹如何提供json .net版本的JsonResult。
在C#裡面,通常Property使用的是Pascal Case(也就是每一個字母都是大寫,例如IsLocked),但是Javascript則是用camel case(駝峰式)。這個會造成javascript在撰寫的時候會比較變扭。
因此,產生的Json應該要是camel case才對。
假設我們有功能需要用post的方式把資料post到Mvc,Mvc可能會回傳3種結果:
其中,成功代表的是http status 200,因此Ajax的success方法會接到。但是另外兩個失敗就是問題所在。
首先第一個「失敗」,這個通常都是http status 400 或者 500 表示有問題,因此ajax裡面的error方法會接到。
但是第二個「驗證失敗」其實是資料面的失敗。以目前來說,通常還是會回傳http status 200,然後要自己早ajax的success方法裡面判斷,是否成功,然後在作出對應處理。
這樣的邏輯其實並不好,因為既然驗證失敗了,那麼應該由ajax的error一起處理,而不是在success,因為寫在success裡面又在判斷其實讓整個javascript看起來不是那麼好閱讀。
這一篇介紹了預設的JsonResult有什麼問題,在下一篇將會介紹如何用Json .net作為序列化的library,並且如何解決上述提到的問題。