看板 C_Sharp 關於我們 聯絡資訊
我的職務主要是做官方網站的開發維護 官網會有許多活動 每個活動頁面都長不太一樣 裡面會有表單讓使用者填寫 表單內容有些是一次性的欄位 其他活動用不到的 採用asp.net mvc開發 目前都是將這些活動頁面放在Areas裡 採用活動日期當檔名 例如20170506xxxxController 資料庫也是這樣開 20170506xxxxTAble之類的 第一次看到這種寫法 假如一年辦個100場活動就有100個controller 覺得架構這樣弄應該不太對 但我也想不到更好的寫法 以前寫過類似的最新消息頁面 是直接撈資料庫裡的html字串 但在這間公司有設計師負責前端排版 而且版面比純文字複雜得多 撈資料庫的作法應該行不通 想問還有什麼比較好的design pattern適用這情況嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.178.108 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1494007669.A.702.html
testPtt: 怎不開獨立專案? 05/08 14:19
每個活動只有簡單的幾個頁面 填填表單而己 有點類似問卷平台的設計 可以新增活動 自訂每個活動所需表單的欄位 再存檔到資料庫 我抄網路上的設計出Table 如下面的pdf https://tinyurl.com/kan37vy 但在後端entity的部份 就不知道要怎麼binding 從view post回來的資料 而且驗證也不好寫 這是我在stackoverflow發問的連結 https://stackoverflow.com/questions/43834428/how-to-validate-survey-table ※ 編輯: vi000246 (175.181.178.108), 05/08/2017 21:11:24
ssccg: 資料收完了還會再改? 查詢需求有很複雜? 05/08 21:21
vi000246: 不會再更動欄位 很簡單的驗證與存檔 05/08 21:49
Litfal: DB建成key-propertyName-value的結構 05/09 00:12
Litfal: 寫一個interface service提供前端到後端的驗證與轉型,以 05/09 00:21
Litfal: 及一些基本查詢,基本查詢可以寫在抽象類別或幫助類內 05/09 00:22
Litfal: 每個活動建立一個Service,實作IService。大致只需要實作 05/09 00:27
Litfal: 驗證部分。其餘由幫助類或基底類別一次性的做掉。 05/09 00:27
Litfal: 前端需要給後端一個活動檔名做關鍵字,例如20170506xxxx 05/09 00:29
Litfal: 然後Controller利用反射或是靜態Create方法建立IService。 05/09 00:30
Litfal: Controller直接用FormCollection,並交給IService去處理 05/09 00:32
Litfal: 缺點是DB的查詢效率會比較差,如果有複雜的查詢或統計,或 05/09 00:33
Litfal: 是使用量很大,那會有一點麻煩 05/09 00:34
IService是把像下面的結構 key propertyName value "欄位1" 1 "欄位2" 2 對應到下面的class嗎 public class field{ 欄位1 欄位2 } 感謝L大的回答 我再來研究要怎麼實作 ※ 編輯: vi000246 (175.181.178.108), 05/09/2017 08:51:36