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?