2019/0612/WebSockets Notification + MVC Part2 PhotoSharing PartialView & ADO.NET & EntitySQL & VMd
VMD = ViewModel
#補充 WebSockets 推送訊息 Notification js 物件
接續 WebSockets
Notification js物件 前端 提示框

broadcast
沒有拜訪過網站,而如果網站有推撥處理要 允許權限
Ie沒有支援notification

時間戳章
Split 靠 : 切開 變成兩個集合
Tag 辨識碼
沒有辦法用在手機上
手機的推撥是基於os作業系統Operating System而不是瀏覽器
AngularJS是一款由Google維護的開源JavaScript函式庫
###
ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/App_Start/WebApiConfig.cs
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/Controllers/NotificationController.cs
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/Views/Home/Contact.cshtml
###ftp://mvc@10.10.3.189/WebSocket2/WebSocket2/Views/Home/PromptController
#05_PartialView 部分檢視
PartialView 部分檢視
通常用在大家都要用它

或是不同的model也可以用PartialView或viewModel
原本要解決多model時可以
Model => action => view
Viewmodel => action => view
Model => viewbag => view
PartialView用途很廣
##首先 在 controller 新增一個 action 來當作 PartialView
但命名規則 前面要加上 _ 只
要是很多狀況時會用到 就要套上 like layout 的命名規則
有_是被保護起來的狀態 無法單獨執行 like master 無法直接執行
照片放泛型 list 裡面
然後 tolist前 要先排序 orderby 依照descebding逆排 建立日期
Thenby 順排
Lambda 跟 linq 跟 sql 寫法不同
ADO.NET才能用SQL但還是有預存程序之類的在 SQLSERVER時用這個比較方便
##接著產生view


Create as a partial view 必須打勾
除了在controller新增檢視外
也可在 shared file 右鍵新增
沒用IEnumerable 的話就是直接帶model過來
但如果放在 IE 裡面 就能用 foreach 讀出來
只是顯示值用 displayfor
新增一個新的index 用於綁定 PartialView
##綁定的方式為

PartialView 是階層的
執行有幾張照片抓不到 filter ValueReporter擋掉了?註冊在整個網站上
必須要在PhotosController.cs _PhotoGallery()
上面[ValueReporter(IsCheck=false)]避免被執行

##反面列表
(之前抓LOG影響要 改成不驗證LOG
但不知道為啥 自己寫的 filter 不吃 false 所以改成自己寫成 條件式
public bool IsCheck { get; set; }

##PartialView利用價值
示範在 Home\Index.cshtml
在 PhotosController.cs
前端傳值 PartialView 只顯示前端傳值的筆數
排序後再做顯示做在後端
###Controllers/PhotosController
###
Views/Shared/_PhotoGallery
### Views/Photos/Index.cshtml
###
老師步驟
# 06_Entity SQL
都是基於ADO.net
現在都用EntityFramwork Model linq 方式給
但 Entity SQL 雖然是架構在 EntityFramwork 但
拉出來講根留言板進度無關

##首先先示範怎麼寫 ADO.NET
加了一個資料夾 DB_ADOnet -> Controllers
增加一個controller PhotoCommentsController.cs
ADO.NET 怎在 Controller寫? 只要把它當成 webform codebehind即可
首先先做ConnectionStrings
把兩個表join起來再回給 index
首先先寫 SQL
查出來是一個 inner join 後的 table
丟到 DataTable 物件
弄一個函數做 sqldataadapter 傳指令進去 傳查詢後的 table回來
接著新增檢視
創造出來的表 所以引入model的方式比較特別 不是原model的結構
要先using system.data
然後 @model system.data.datatable
因為沒有model所以title都要自己寫
Gridview 跟 datatable 一列就是一個 row
所以要用 datarow讀出來
@foreach(DataRow db in Model.)
引用方式用 @ db [“PhotoID”]即可
無任何留言 用 @ if 判別
到此完成
join正規化過後的資料表組合回來
Webform只要拖過來做連結即可
MVC 什麼都要自己刻
接著去做 Display 也是用 ADO.NET
Controller 查詢 然後return 查詢後的table
如果沒收到傳送值 顯示錯誤頁面
接著做回覆留言 其實就是 Create
HTTPPOST
Validate
簡單繫結
做一個 executeSql
做資料儲存
如果是預存程序
Cmd.CommanndText 預存程序名稱
是 void 必須要指定 command type
如果把 commandtype 寫在資料儲存 function 那就只能預存程序 所以可以寫在外面
接著做 Parameters.AddWithValue
有指定名稱 純量變數名稱
###
DB_ADOnet/Controllers/PhotoCommentsController.cs
###
Views/PhotoComments/Index.cshtml
###
Views/PhotoComments/Display.cshtml
#下午從 visual studio做一個預存程序 開始
新增查詢或是預存程序 來打 sql 碼
Create proc
參數@
###Add_Comment.sql
做好 Add_Comment
接著到 CreateComment.cshtml
寫回覆留言的View
要處理 ADO.NET 新增 並儲存到 資料庫的 操作 從前到後
到此 ADO.NET CRU 做完
###Views/PhotoComments/CreateComment.cshtml
接著講
##EntitySQL

File -> DB_EntitySQL -> Models 建立獨立的Model
Webconfig 就會多出 ConnectionString 連線資訊

接著再建立一個 controllers 資料夾
並建立 EntityPhotoCommentsController.cs
並編輯
首先 using PhotoSharing.DB_EntitySQL.Models / System.Net
以前都用用 EntitiyFromwork 先新增一個 db物件
以前Model 只能一個 資料表對一個,
現在要試 join 表
要先using System.Data.Entity.Core.EntityClient
要改用 EntityConnection name 要對應到 webconfig ConnectionString
Createcommand() from不可以直接寫資料表名稱 必須連結構也寫出來補上去
連線不會自己開關 也是要像ADO.NET 一樣
因為沒有 DATASET ? 所以只能一筆筆慢慢讀
而且同個陣列必須要同一個型態所以都轉成 string
可以丟在 LIST 泛型內 也可以丟在 arraylist 擺放集合的物件
不能直接return 過去
要丟在 view bag 裡面過去
接著新增檢視index 不用帶 model
那不帶model 要怎辦呢 ?
把ViewBag 丟到 var 裡面
就可以拿來當 model 用
底下用原本的方式編輯即可
###
###DB_EntitySQL/Controllers/EntityPhotoCommentsController.cs
##補充 模型瀏覽器 資料庫更新模型
(




##編輯 尋找取代 ( 可以快速把某個字符 取代成 別的 )

接著把 Display controller補完 只要拿剛剛的index來改即可
再繼續接著把 Display 檢視做完 可以從剛剛的index 改
接著處理 create controller 一些細節跟 ADO.NET不一樣
這邊就不用簡單繫結了直接傳Model近來
然後commandtext 也要把結構寫出來
然後 parameters 不用@
然後一樣打開後要關閉
Excutenonqu
這裡讀寫資料都只用到 sqlmand
不像ADO.NET 要用不同物件
處理完功能後
一樣新增檢視
一樣去改 ADO.NET 寫的 Create
至此結束
###在只有一個 model的狀況下 釉藥join 就可以利用到 entitysql
###Views/EntityPhotoComments/Display.cshtml
###
Views/EntityPhotoComments/CreateComment.cshtml
接著
#07_ViewModel

分類並做資料存取
一對多 資料做增刪修
一個以上的model 合成邏輯上的 一個 viewmodel
直接在裡面建立類別 Photocomments.cs
做 public List <Photos> photos {get;set;}
新增一個controller
VMPhotoCommentsController.cs
Using model
引用 db entities
然後把資料表查詢的結果整合成剛剛建立好的 viewmodel 物件
然後把一些關鍵欄位查詢好後放到viewbag 然後return viewmodel物件
接著新增檢視 範本 list 模型 留言 砍掉一些沒用的
如果model為空則 尚未有人留言
假設說 想要顯示單筆資料 那在viewmodel要如何做?
如果有些值 viewmodel 呼叫不到 這時剛剛產出的viewbag用途就來了
Display.cshtml 頁面 用 陣列抓值
到此 完整 但viewmodel的地方還沒講完明天繼續
###
ViewModel/PhotoComment.cs
###ViewModel/Controllers/VMPhotoCommentsController.cs
###Views/VMPhotoComments/Index.cshtml
###
Views/VMPhotoComments/Display.cshtml
###老師步驟
Last updated
Was this helpful?
