發表文章

目前顯示的是 9月, 2018的文章

手刻 JQuery,Linq to SQL,AJAX , C# 做修改與刪除(Part1)

圖片
寫程式使用Ajax已經是十年前ASP的事,當時沒有其他框架輔助,傳輸資料走的是XML,組合資料相當不方便。以現在而言,不論前端或後端,將DB資料組成JSON傳遞與解析都已經非常方便了。以下的專案用一個ASP.NET WebForm當例子,實作Ajax顯示與更新資料。 WebForm常常被看作懶人程式,因為技術門檻低、拖拉控制項就會有結果。可是ASP.NET本身的ViewState以及操作往返暗地傳輸的資料,當畫面複雜時,速度就會變得笨重,許多顯示事件都放在後製程式碼中也不好閱讀。雖說 Asp.NET MVC更直接改善了責任分離與可維護性,但針對既有的Web Form專案,還是值得去改善她。 步驟一:資料來源 在專案引入Entity framework,選擇從資料庫更新模型。雖說網路上有許多大神推薦Linq to SQL,但以個人建議,除非自己是DBA而且對物件的命名、架構、關聯都有高度掌握,不然後續架構的變化,會讓模型突然跑出一堆編譯錯誤。Entity framework本來就只是個協助將資料庫物件反過來「物件化」的捷徑,若是資料非常龐大或結構複雜,應該好好想一下才對。 例如有一個資料表叫SCHOOL,裏頭有全台所有大專院校的資料,每校一筆且有索引鍵;這種形式的資料透過Linq to SQL存取就變得十分容易。我們用一隻泛型處理函式(.ashx)來顯示Linq從db抓出的資料,然後以JSON回傳給呼叫的前端。實務上還要考慮:回傳筆數是否加個上限,以免DB被操爆了,然後是否要限制這隻泛型處理函式適合被哪幾隻呼叫?需要在有登入的前提下才能呼叫他。 首先,因為考慮要判斷呼叫者的Session,所以.ashx的開端要加上繼承SessionState。  public class GetOperator : IHttpHandler, System.Web.SessionState.IRequiresSessionState 然後,假設我們用學校代碼判斷回傳該校的人員,所以人員代碼要做點格式判斷。 在Ashx內讀取 Request,應該加上 context.Request。  string shno = context.Request .Form["SCHOOL"];         ...