2019/0508/Asp.Net_MVC_Model_ADO.NET+Entityframework+LoginMember實作+MVC觀念
#ASP.NET_MVC_Model_ADOnet
首先開個空的mvc專案
然後老師有準備個db demo
然後開始先寫controllers
把ADO會用到的套件using進去
連線資訊放在 組態webconfig 是一種保密方式
更好的方式要在作業系統帳號密碼
或是帳號密碼放在AD統一管理
所以要去webconfig改資料庫存取路徑
|DataDirectory|是相對路徑會自動去app_data找資料庫
Intrgrated Security 是否要帳號密碼
相對於資料庫內的帳號密碼會顯示
這邊只有使用者會知道帳號密碼,因為存在作業系統
接著建造資料庫物件
建造在action外側
因為要讓所有action都能用
接著到index actionresult
去撈資料放入dataset物件 (
再放進去datatable物件 ( 資料表
Return view這個 datatable
接著去編輯view讓這個資料能夠顯示
因為是空的view而且也沒套用model模板
所以最上面要人工抓model
然後簡單html排版
利用@razor迴圈抓取資料並顯示
簡單套bootstrap table 瞬間排版 …

如果ftp抓資料下不來可能是在使用就會產生log檔

以下是老師版本步驟 老師有兩個版本的步驟不知道為啥
不一定所有的系統都具備新增刪除修改
有寫才有
所以我們先寫一個create action
這個是控制create html view頁面使用
在建立一個 create ( 參數 多載
用於將資料存入資料庫
首先將sql語言 寫 insert 放入字串中
在控制資料庫物件做方法(靜態函式?
Cmd.Parameters.AddWithValue
此方法需要給參數與參數來源
記得存入時要打開資料庫存完要關閉資料庫
做完後將資料 傳到 index action
接著做 delete
只要改寫create即可
然後回頭看有很多重複的code
所以…高內聚力低偶合力
建立一般方法
調整架構 把一些重複使用的放在這
以下為調整完後的code
方法為 先直覺寫在 調整會比較好思考
### /03Model_ADOnet/Controllers/HomeController.cs
###以下為老師步驟
沒有model是把資料庫擺在 app data 裡面
藉由 webing 去調用 增加資安性與物件導向重複利用性

接著編輯 creat.cshtml
這邊會示範bs3如何做表單form
首先要設定傳送方式與動作(url請求傳送的封包內容
<form method="post" action="@Url.Action("Create")">
表單到這邊就結束了 以下示範bs3排版
###一樣的重點
Id給前端用的
name給後端用的記得要簡單繫結與後端參數相同名稱
Type給input用的html5
Class給bs用的
這裡應用到 label for 這個??
可以讓區域點選 這方面可能還要看一下
喔喔原來是 htmltag自帶的功能for對應的是id
###Bs網格系統要空格要用 offset後面在接空幾格
接著最後用@razor做連結將顯示頁面與新增頁面鏈結
回到index
做刪除的@razor 這邊跟上面類似但比較麻煩是
Helper裡面傳的參數比較複雜不是傳頁面
而是用razor寫的要帶在url裡面傳到後端的指令
##以下為老師程式碼
###model

#MVC連接資料庫db兩大做法 04Model_EF
##1.Ado.net 蟑螂
.net 1.0 就有了
###03Model_ADOnet/Controllers/HomeController.cs
###老師步驟
###/03Model_ADOnet/Views/Home/Create.cshtml
###/03Model_ADOnet/Views/Home/Index.cshtml
##2.Entity framework
Webform
則是datasource control 控制項
##以下開始講 EBTITY FRAMEWORK
開新專案
##LINQ 語法sql的倒裝句
Sql
selec * from
Where
Groud by
Having
Oderby
但linq是從from
### Lanbda方法可以不用寫那麼長的linq
就像view要用到@razor所以講一樣
###以下範例為高雄銀行考題
首先宣告一個
一般方法
宣告 陣列 成績
題目是從大到小排
通常使用氣泡排序
這邊使用EBTITY FRAMEWORK
Linq語法 的 擴充表示法 Lambda
Var show = Score.orderbydescending(s=>s);
呼叫內建函數來用 ( 泛型 物件 上面那個
但高雄銀行是要把內建函數內容寫出來
接著迴圈一個一個讀出來
Linq大部分都在操控資料
例如 排序 抓取位址資料 常用的就會做成擴充方法lambda
如果要用的功能沒有就要自己寫
用pre linq 寫起來就會比較長
Linq 查詢運算式
原生sql select * table order by score desc // dml
物件 result=
from資料表名稱in集合
where條件
orderby資料表名稱descending
select 資料表名稱
感覺原生要先學熟在學擴充 …
擴充方法加總
Result.sum()
C#有些擴充語言可以做到某些功能但某些功能沒有內建可能R有JAVA有
看那個語言適合做甚麼可以做什麼不可以做甚麼
##接著模擬登入 LoginMember
建立一個model但是在controllers裡面的類別檔案
Codefirst?? 自動建立pk ? 後面會講?
沒有規定model一定要放在models資料夾
也沒有規定 controller一定要放在controllers資料夾
只差在namespace放置位置跟using引入
在回到homecontroller.cs
Arraylist new ???? 物件陣列建構子 ( 可以一次new一堆物件
然後建構裡面的物件
model在controllers裡面的member.cs內
然後也是pre linq 跟lambda linq兩種方式去操作這些資料
### 運算要用c#的語法不能用sql語法
###以下為老師程式碼
###model

###/04Model_EF/Controllers/Member.cs
###04Model_EF/Controllers/HomeController.cs
###老師步驟
##接著建立資料庫?? 04Model_EF/北風資料庫
Model右鍵
北風資料庫 ( 微軟公開練習資料進銷存系統 ( 老師這個版本是簡化過的

純淨態類別永久性儲存類別圖 相對應的是 存在記憶體內的暫存

導讀model了解內容
實際上這些model在做ADO時自動成為class
###Db first 所以會出現一些自動出現的東西 例如關聯等等

Model用controller操控
要講linq操作
這次是真的要從資料庫讀
剛剛都是把資料放在專案檔案內
Mvc方式是透過model去存取資料庫
新增一個 linqController.cs
做db物件
然後新增一個 string showenployee()
用pre linq 取資料
然後再用 lambda linq 取資料
兩種方式
然後想要秀在view上面的話 老師這邊是套版view
###很常犯的錯誤 記得 return 後面 view() 參數要回傳資料回去不然看不到
##以下為老師程式碼
###04Model_EF/Models/

###04Model_EF/Views/Linq/Index.cshtml
###04Model_EF/Controllers/LinqController.cs
##老師步驟
#在model裡面建立驗證功能
接著dbstudent.mdf建立model
Webform時用驗證器控制項
Mvc時
寫在model或寫在view或寫在controller
這邊簡單介紹後面會複雜介紹 …
Dbfister時很多程式碼物件會自動產生要相信做db的人
回到model tStudent.cs
Using sysyem.componentmodel
即可用
[Displayname(“”)]
即便是db產生的model也可以在model檔案裏面去修改model
驗證必填 [required(ErrorMessage =”學號不可空白”)]
驗證信箱 [EmailAddress(ErrorMessage =”信箱格式有誤”)]
驗證範圍 [Range(0,100,ErrorMessage =”信箱格式有誤”)]
好了model弄好了
新增一個 ValidationController.cs
做model驗證示範的view的controller
首先 加入資料庫
在把資料庫物件丟到變數
在return到view
新增一個view範本即可
接著稍微修改這個範本產生出來的東西
好了之後我們只實作creat 所以只留delete
回到ValidationController.cs
建置一個 actionResult Create()
連接view
與
[httpPost]
actionResult Create(tSttudent stu) pk
做資料回傳資料庫的動作
首先先判定驗證通不通過 利用
Modelstate.isvalid
才可以
將tstudent stu加入 db中
然後儲存結果
傳回redirecttoaction (“index”)
如果沒有驗證成功則return View(stu);
接著實作delete
新增一個actionresult
傳入要delete的pk
然後利用物件去查詢它然後刪除
確定刪除
回到index
###老師程式碼如下
###04Model_EF/App_Data/dbStudent.mdf


##04Model_EF/Models/tStudent.cs
###04Model_EF/Controllers/ValidationController.cs
###04Model_EF/Views/Validation/Create.cshtml
###04Model_EF/Views/Validation/Index.cshtml
Last updated
Was this helpful?
