2019/0516/BS form&驗證+JQ驗證 & MVC_CRUD(CU)
#Bootstrap
接續昨天card
可以套其他組件
學框架要懂舉一反三
積木在那裏了堆成怎樣就看各人
接著
##bs form
class
Webform一頁只能有一個form標籤就是最外層那層form且屬性server就是在伺服器執行

但其實pre html 一頁可以有很多 form
友善介面 input 善用 label for id & placeholder
##Class keyword
Form-group
Form-control
Form-text
Text-muted
btn
btn-secondary
form-check
form-check-input
###/RWD/17Form.html

以上為上下排較制式
接著嘗試左右排
要配合gridsystem
在container內做就會遷就container的大小
##keyword
form-row
以前還要多一個div做col現在可以在 form-group那層直接col
col-md-6
以前還要每個都下 form-row
現在只要讓div在同一階層他就會自動判斷為 form-row ?
只要是form 裡面的物件 就用 form-group 然後 form-control
然後用 form-row橫排或不寫 直接直排
##接著將欄位名稱與欄位並排
###Form-group 直接當 row 底下的就都變 col 但input要用div包住下col ?? ((( legend 也是一個 div 的感覺
Col-form-label
Form-label-lg ( 字就會變大 ?
##題外話 控制項 ?
##題外話 Html tag fieldset legend
###/RWD/17Form.html

##接著form實例??
form-inline
sr-only ( lable會不見 ?? ( 視障者專用 ?
https://segmentfault.com/q/1010000003007829
原則 form-control 一定會有 其他都是扛拜 ??
Form-check
Form-check-input
Form-check-lable
### /RWD/18Form-2.html

重點
要知道階層對應關係(繼承與boxmodel與prestyle) 然後才去注意class扛敗
bootstrap 驗證狀態 ? 加上 jq 驗證寫法
樣式在不同瀏覽器不同效果
Bs有提供一些驗證狀態樣式
form 屬性novalidate不要驗證 ( 表單不驗證 input 屬性 required 必填驗證 ( 但按鈕驗證
keyword class 驗證產生文字位樣式
valid-feedback invalid-feedback
必須要在js寫驗證判斷才會顯示
其實只是驗證成功失敗時扛拜一個驗證成功或失敗的 class
Keyword class 驗證欄位樣式
Is-valid Is-invalid
兩種方式 同樣都要用js先驗證判斷值出現後決定要塞class 驗證通過或驗證失敗
然後 feedback 這 可以在文本內安排通過失敗文本 或 安排一個容器 用js改變class 也可以
驗證的js要怎寫? 問google keyword https://www.google.com/search?rlz=1C1GCEU_zh-TWTW835TW836&q=mail+javascript+regex&spell=1&sa=X&ved=0ahUKEwjbpMTeiJ_iAhXHx4sBHSWJAigQBQgoKAA&biw=1920&bih=936
正規表達式包覆 /^ 開始 $/ 結束 不是雙引號
Jq 檢測 Test 方法
題外話:右鍵檢查可以直接展開那個位置的程式碼

###/RWD/19ValidationStatus.html ( 條測函式前 ( 且鎖住 submit 不讓它 postback
##接著調整架構 (內聚力高耦合力低)
一樣的地方放在 function 不一樣的地方當作參數傳入 function
接著寫 click 觸發後
驗證過
呼叫 function
if
通過就傳通過的參數 沒通過就傳沒通過的參數
然後驗證呼叫的這件事情也可以調整架構
但只能相同驗證方式同一架構
###巢狀 必填驗證先驗證後 如果有填才進行別的驗證 避免 字被蓋掉
##JQ 內DOM選擇器
+: 下一個兄弟結點NODE ~:下N個兄弟結點NODE
#接著處理submit postback問題
下旗標 ? ( 用來輔助驗證通過或失敗的變數
將form取id
使用submit方法
然後弄個旗標值做true或false判斷
##最後 改成 keyboard 事件 只要有打字就觸發格式驗證
但是必填還是要由click觸發
##預設submit是會送true
在這邊我們用 submit(function () 接手 再去判斷 true or false
純html狀態消失才算送出去
但webform會保留狀態就不能這樣判斷
###RWD/19ValidationStatus.html

MVC_ CRUD 接續昨天
昨天做完查詢(要自己改成輸入)跟刪除
新增
因為index是範本產出裡面已經有create連結
所以我們直接用controll新增get create 的actionresult用來 return View()
第二個用來post的create 表單mether是post就會呼叫這個action
先用簡單繫結法把所有欄位當作參數傳入,必須要跟表單上的name一樣
圖片”檔案”必須要用HttpPostedFileBase型態傳
然後try catch
這裡不處理檔名重複問題 ( 實務上要判別
System.IO.Path.GetExtension(fImg.FileName) 可以從主檔名內抓副檔名
寫判斷如果抓到的東西
利用fImg.ContentLength 檔案大小 大於 0
fImg.SaveAs(Server.MapPath(“~/images/“+fImg.FileName)將檔案轉移到伺服器 ???
將參數轉至變數物件( 包含檔名等等
存檔至資料庫
以上為簡單繫結的方式 也可以用複雜繫結
寫好功能後利用這個action右鍵新增檢視使用範本
添加 form的
method post
action 用 @Url.Action(“Creat”)
enctype=”multipart/form-data”表單類型改為這種 要傳檔案的
產生token
action檢查token
HttpPost底下要加上
範本只需要動
上傳圖片那裏(因為範本的是只要傳圖片檔名(但我們是要檔案
改為input id="fImg" name="fImg" type="file"
底下submit底下把try catch的
@ViewBag.Error補上
###06CRUD/Controllers/HomeController.cs
###06CRUD/Views/Home/Create.cshtml

###老師步驟
Debug ie 問題 抓 filename抓出來的值不一樣 以上從改 (資安問題
D:\AAA\img.jpg IE
img.jpg chrome
要利用GetFileName方法
順道調整架構 整理成以下
#接著換修改
Action 沒有順序性先寫哪種沒關係
首先新增一個 Edit 的 action 然後
用get接參數 ( 簡單繫結即可
接著將參數用lamaba查詢到的資料 return丟回View
接著新增一個 post 一樣token
圖必須要看 (沒有就沒事
有沒有置換有的話就要刪除原來的圖然後上傳新檔案
還要傳圖片目前的檔名才能夠去判斷是新還舊
接著 如果有置換
就刪除 system.io.file.delete(server.mappath(~~~~)
然後將舊檔名改為新檔名
存檔
如果沒改則把新檔名改為舊檔名做存檔
### 06CRUD/Controllers/HomeController.cs
接著新增一個edit的view一樣預設範本 但是把 form 手動編輯
然後圖片那裡用隱藏按鈕用於簡單繫結傳送舊檔名資料
預設的範本 pk不能改 應為改了 你整個動態網頁的東西都會有機會出錯
然後範本很多東西都重複產生可能都要註解 ( 熟悉才能註解不然會出錯
剛剛錯誤是 寫入資料庫時pk重複
新增是增加的
修改是修改重複的
物件一定要有傳過來做查詢顯示用
但是不能新增add
要直接save
以下為改過的 control
### /06CRUD/Controllers/HomeController.cs
最後會貼一次 完整的 CRUD所有的程式碼與大概網站結構圖
###06CRUD/App_Data/dbProduct.mdf

### /06CRUD/Models/tProduct.cs
###06CRUD/Controllers/HomeController.cs
###06CRUD/Views/Shared/_Layout.cshtml
###06CRUD/Views/Home/Index.cshtml
###06CRUD/Views/Home/Create.cshtml
###06CRUD/Views/Home/Edit.cshtml
###老師步驟
#六月份會從頭做到尾一次給我們看
Last updated
Was this helpful?
