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

#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?