2019/0515/RWD Utility+Card&MVC ViewModel+CRUD(RD)

#RWD Utility

上次講的是排版方式 flexbox bs4

這次繼續講通用Utility類別 字型 字體 顏色 背景

Bs4比bs3顏色更多

全幅背景圖??

##Utility顏色

###Keyword 文字

text- …

###Keyword 背景色

bg- …

###Keyword 複習

p ? padding

mb ? marginbotton

bs3沒有通用屬性要自己下css

transparent 透明

###RWD/11Utility_Color.html

##Utility格式

keyword

<h1-6>

<small>

<pre>

<code>

<kbd>

沒套的時候其實只是有含意的區位沒有樣式

###RWD/12Utility_Text.html

##格式對齊

###justify自動切齊 ( 字跟字寬度自動平均

###badge 徽章

###以斷點做文字對齊 sm md lg xs(太小不用寫)

###truncate 隱藏多於的資料 (( sql 看過 則為刪除資料不留log

###相對

###絕對

### Overflow = break ? 卷軸

其實以上bsclass css裡面就是overflow hidden

還有很多例如

去除底線

開頭字變大寫 capitalize 其實都是 css style 只是在稍加更改

### /RWD/13Utility_Text2.html

##邊框 border

Rem 從根 window 繼承

### /RWD/14Utility_Borders.html

## Utility總結 比較牽涉到版型設計頂多牽涉到UX跟功能較無關

Display 顯示

Flex 對齊

color顏色

border邊框

剩下的老師沒講需要在看docs

##BS 對表格影響

table

caption

tfoot

thead

tr td

原本都有自己的位置定位

但放入bs就會整個布局都不一樣

有很多種bs樣式要去docs看比較清楚

然後連hover都會有改變

#改核心不要直接改

最好的方式是 複製起來然後自己弄個自己網站的css後置程式碼 然後改顏色等等 然後?只要link位置比原bs.css引入得更後面 就會吃越後面link那種

Table有沒有響應式呢? table-responsive-md

### 15Table.html

##Card ( 有階層性

Pano? Bs3 改成

Card bs4

Components 組件

Content 內容

###階層性

Card-header/body/footer

接著用用flexbox去排版 col-md-4 …

Columns 列

Row 行

如果要擺圖片?

首先圖片先給響應式class card-img

1擺在卡片最上方

然後跟header/body/footer同階層

接著又分左側右側

2圖片左邊文字右邊 ( 卡片系統無法 ???

所以要利用網格系統 ( 會很多層 ( 好像是 卡片系統無法跟網格系統互相 扛拜 所以需要用 div下網格系統在 包住 卡片系統

還可以扛拜很多東西,老師說自己看 …

### /RWD/16Card.html

###Card內容

Card-text/title/subtitle

Card-link

###List ul li

List-group

List-group-item

List-group-flush

也可以直接放到gridsystem ??

然後下head 可以融合看起來像一體設計

就是大小顏色樣式寫好了 可以共存的style

一樣去官網看

### /RWD/16Card.html ( 同一個檔案下半段

##卡片系統搭配其他系統只要扛拜出來即可

##補充

預設是gridsystem https://getbootstrap.com/docs/4.0/layout/grid/

除了content 也可以用 row 或 card-group

總之card可以跟其他組件扛拜 要舉一反三十六

### /RWD/16Card.html ( 補充扛拜系統程式碼

###/RWD/16Card.html

#MVC

Mvc 利用 tD(tDept) tE(tEmp)一個 model 只能配一個 view

那怎讓兩個Model配同一個view??

2種方式

ViewModel ( 為了一個view讀兩個model特地去做一個新的model出來 跟MVVM是兩碼子是

patidView

ViewModel

先介紹第一種 首先建立基底MODEL 接著建立一個新資料夾取名叫ViewModel藉此區分 ( 也可以放在原資料夾 接著在ViewModel資料夾中新增一個CVM.CS 要將兩個Model合併在這一個class中 記得要引入另外一個models才可以使用物件 using _05ViewModel.Models;

首先使用泛型list塞 tDepartment與tEmployee 這兩個class建立 CVM這個model

接著就要去編輯Controller 記得要把基底,model與原本的model都要進來 但是還是要將 dbEmployeeEntities 建立物件 接著藉由CVM這個類別建立新物件 將資料塞進去 直接將 CVM這個物件return回view

然後不用範本直接空view

打開只會看到layout

接著用razor引入 model資料 @model _05ViewModel.ViewModel.CVM

就開始用BS gridsystem排版左邊引入tDepartment 類別資料右邊tEmployee資料

此時已經把資料合併為CVM而且 讀出來了在這個頁面了

只要寫RAZOR 寫C#即可把資料做顯示

接著做塞選 點左側連結後後右側顯示塞選後的內容

接著要去修改controller傳過去的資料庫model內容要改成查詢式where

即可

###資料庫

###model

###/05ViewModel/Models/tDepartment.cs

### 05ViewModel/Models/tEmployee.cs

###ViewModel

###05ViewModel/ViewModel/CVM.cs

###/05ViewModel/Controllers/HomeController.cs

###/05ViewModel/Views/Home/Index.cshtml

###老師步驟

接著做新增功能

一個是get 一個是 post 所以有兩個 action 因為要把資料帶到view給下拉式選單用 所以get裡面要傳tD

接著處理 POST 把接收到的前端資料寫到參數傳入ACTION 在傳入資料庫 儲存

要RETURN到你當初編輯前的頁面所以要帶部門參數

接著新增CREATE檢視頁面 ( 一樣不用範本 一樣引入資料MODEL

簡單繫結 form

Bs畫表單 ( 還沒教先講

Keyword

Form-horizontal/group/comtrol

然後利用gridsystem排版

Label for

弄完一個按鈕後 複製四次 改繫結位置 與 顯示字 即可

最後 用一個 submit的按鈕 Bs排版 offset 空格

更改部門欄位改為下拉式 回圈顯示選項 ( 要動態的從資料庫顯示出來 ( 不要寫死 不然維護麻煩

到此新增功能完成

###/05ViewModel/Controllers/HomeController.cs

###05ViewModel/Views/Home/Create.cshtml

###老師步驟

#接著刪除功能 刪除後返回原來頁面

在view 寫 razor 用 actionlink 傳送 刪除的物件的id與指令

因為刪除沒有刪除自己的特別頁面所以可以從view寫回control

等等看程式碼

###/05ViewModel/Views/Home/Index.cshtml

###05ViewModel/Controllers/HomeController.cs

等老師最後程式碼與步驟 再一起貼 ???

#CRUD 接著做一次 MVC 新增修改刪除查詢 ( 細節觀念 也會交代

CRUD 新增修改刪除查詢 正統不講

create, read, update, and delete

修改跟新增其實很像

新增model 名稱其實可以跟資料庫不一樣是脫鉤的可以自取

Db first 有db 在建立model

建立好後建置編譯

接著 進入 model 確定 資料內容

首先 displayname ( 可以在view改或在model就做好

且要先 using componentmodel 這個 packge class

以MVC宗旨 ( 商業邏輯必須寫在 Model ( 如何寫呢?

應用程式端 或 model (擴充功能 跟類別很像castan) (下個單元會講 ?

Model好後右建新增control

Using model近來使用

使用模組物件 建立一個資料庫物件

利用return 將資料 db.tproduct.tolist() 到 index 這個 action

然後產生view用範本

model => model.fName

Lambda

###model

###/06CRUD/Models/tProduct.cs

###06CRUD/Controllers/HomeController.cs

###/06CRUD/Views/Home/Index.cshtml

#接著講刪除但還是用之前的做法 ( 出現確認視窗刪除 ( 刪除資料檔案與資料庫欄位資料

正式的刪除頁面進行刪除

刪除除了資料庫內的檔案路徑要刪掉外

還要刪除實體檔案資料

首先在action 建立 delete

建造一個變數塞查詢式

接著把路徑資料抓出來

System.IO ( 只要跟實際檔案上傳下載刪除有關的類別

方法為 Delete

Server.MapPath (邏輯路徑跟實體路徑轉換)

刪除檔案後

然後將欄位資料位置給刪除

儲存

傳送至index

回到view用actionlink 傳送 確認刪除的alert

###/06CRUD/Controllers/HomeController.cs

###/06CRUD/Views/Home/Index.cshtml

#CRUD剩下CU 下次繼續 ( 重點為空值??

Last updated

Was this helpful?