C50108
  • 2019/0801/轉職成功路途開始
  • 自學心得與此網站使用方式
  • 行事曆&課程大綱
  • 2019/0224/自我檢視
  • 雜記
    • 2019/0103/雜記
    • 2019/0410/作品集建構
    • 2019/0429/職訓局書單
    • 2019/0317/自我檢視
    • 2019/0316/陪玄松去高車討論&環境圖流程圖大神們line討論
    • 2019/0305/Gitbook使用方法
  • 2018/10XX/轉職心路歷程
  • 職訓局里程碑
    • 201901
      • 2019/0103/行動商務系統設計與開發,職訓局報到
      • 2019/0104/正式開課日&行動商務課程簡介
      • 2019/0108/資料庫理論/Access&WEB開發簡介
      • 2019/0109/資料庫資料型態屬性&HTMLtag
      • 2019/0110/計概基礎概念
      • 2019/0111/HTML表格table&form表單_post/get&iframe
      • 2019/0114/計&網概概念&網路層概念
      • 2019/0115/資料庫Access運算值&CSS簡介&在職班補充
      • 2019/0116/Access比較/邏輯運算&CSS_在職班補充+選擇器+Box model
      • 2019/0117/資訊系統架構&網路層
      • 2019/0118/資料庫正規化
      • 2019/0121/計概IT分工&資料庫正規化
      • 2019/0122/網路層&CSS父子容器切版
      • 2019/0123/Access資料庫關聯&CSS position&偵錯
      • 2019/0124/C#宣告、指定運算子
      • 2019/0125/VM虛擬機_基礎介紹
      • 2019/0128/VM虛擬機架設_虛擬網卡設定&伺服器權限設置
      • 2019/0129/Wireshark查詢網路層&資料庫物件導向
      • 2019/0130/ERmod雞爪圖&C#if、for時間複雜度
      • 2019/0131/C#流程控制&變數型別
    • 201902
      • 2019/0201/系統分析與設計_資料庫ERmod&c#Homework
      • 2019/0211/ASP.NET_Webforms&物件命名空間
      • 2019/0212/定址&網路遮罩
      • 2019/0213/SQLSeverM.S.介紹&AspWebforms表單控制項
      • 2019/0214/網概乙太網路&網路安全
      • 2019/0215/Pre Javascript 基礎 & 在職班補充
      • 2019/0218/TSQL基本指令&ASP.net左右置換表格/驗證傳值
      • 2019/0219/Javascript終極密碼&musicplay&asp.net驗證器
      • 2019/0220/SS基本語法&網概line機器人
      • 2019/0221/前端Javascript musicplay、內聚力耦合率
      • 2019/0222/前端Javascript musicplay、內聚力耦合率&伺服器權限
      • 2019/0223/SqlServerHomework&第一次專案報告
      • 2019/0225/SS合併查詢&ASP.NET驗證器
      • 2019/0226/伺服器ntfs安全性權限/共用權限
      • 2019/0227/Javascript_music_play_end&ASP.net串聯SQL(datasource就是拿來串SQLServer的)
    • 201903
      • 2019/0304/SS集合運算/子查詢/exists&asp.net GridView 事件 OnRowDataBound
      • 2019/0305/SS查詢式end&ASP.NET_Gridview_自訂樣式分頁
      • 2019/0306/Javascript musicplay_really_end
      • 2019/0307/前端HTML5鑲嵌字型&伺服器網域概念
      • 2019/0308/Android Studio_基礎概念&開發環境建置
      • 2019/0311/胡中興 工業4.0講習
      • 2019/0312/安卓系統_開發基礎介紹
      • 2019/0313/安卓工作室_基礎/布局內元件
      • 2019/0314/Asp.net鏈結資料庫-查詢
      • 2019/0315/SQS DML&第二次專案報告
      • 2019/0318/SQL DDL & 伺服器 自學基礎
      • 2019/0319/Android Studio_布局內元件&佈局規劃元件
      • 2019/0320/SQL檢視表&tsql基礎&Asp.net_Gridview
      • 2019/0321/TSQL&TDM&ASP.NET_Datalist
      • 2019/0322/DOM&JQ基礎&系統分析設計PPT&在職班補充
      • 2019/0325/TMD&Asp.net上傳圖片/產生QRCode
      • 2019/0326/SQLServer_預存程序+函數&Asp.net_Webforms半自動鏈結資料庫與自動化更新
      • 2019/0327/安卓工作室_佈局規劃元件
      • 2019/0328/jQuery選擇器應用&Ajax導讀+應用&asp.net串sserver_註冊帳號功能
      • 2019/0329/ADDS伺服器架設&第三次專題報告
    • 201904
      • 2019/0401/SQL觸發程序&Asp.net自動寄信&認證信
      • 2019/0402/前端作業四-jQ應用轉換樣式&ASP.NET_FormView控制項-會員資料維護實例
      • 2019/0403/JQ事件動畫&股市&Usecase
      • 2019/0408/安卓工作室_元件/布局基本end
      • 2019/0409/安卓工作室-物件導向事件驅動實作+Homework1&2
      • 2019/0410/上午小組討論-作品集自習&Visual studio webform+MVC範本
      • 2019/0411/安卓工作室-UI觸發委派函式與控制物件
      • 2019/0412/JQ動畫實做(寶可夢遊戲開場)&第四次專題報告
      • 2019/0415/前端JQ-Ajax+JSON&後端ADO建置、主板頁面概念控制項、Bootstrap演示
      • 2019/0416/安卓工作室UI控件案例結束、IDE Eclipse_Java物件導向基礎
      • 2019/0417/伺服器網域ADDNS&416LINE討論
      • 2019/0418/SQL指標、索引&Use cace
      • 2019/0419/主頁、Webform ADO.NET Entity Fromwork 增刪修實作&第五次專題報告
      • 2019/0423/Java基礎(型別/溢位/自動強制型別轉換/鑄造物件/串流/)&I/O物件用法(底層/較不底層)
      • 2019/0424/Bootstrap_RWD基礎/應用&Asp.Net_MVC實作增刪修(修待補)
      • 2019/0425/伺服器IIS安裝&資料匯入與管理
      • 2019/0426/Asp.Net_MVC增刪修實作(補修)&bootstrap – gridsystem– 網格系統&第六次專題報告&全國技能競賽網頁設計
      • 2019/0429/物件導向技術原理方法實作
      • 2019/0430/資料庫設計應用效能調教_SQL all end&ASP.NET_MVC_Controller單元_純C無V無M操作/簡單複雜繫結
    • 201905
      • 2019/0501/內部網站辨識&外部DNS域名/IP+自架DNS伺服器理解
      • 2019/0502/Java語言基礎、物件導向基礎
      • 2019/0503/Asp.net泛型處理常式驗證圖片應用&第七次專題報告Usecase
      • 2017/0506/Bs_FlexBox&Asp.Net_MVC_View+Razor@+Viewbag+helper
      • 2019/0507/Java 物件導向_類別+函式觀念&階段性作業三
      • 2019/0508/Asp.Net_MVC_Model_ADO.NET+Entityframework+LoginMember實作+MVC觀念
      • 2019/0509/Java物件導向(函式)_儲存型態+回傳值+多載+自制+例外處理+this參照+存取+複合
      • 20919/0510/第八次專題報告=功能DEMO
      • 2019/0514/Java_靜態類別+繼承特性
      • 2019/0515/RWD Utility+Card&MVC ViewModel+CRUD(RD)
      • 2019/0516/BS form&驗證+JQ驗證 & MVC_CRUD(CU)
      • 2019/0517/ASP.NET Webform介紹Master page 主頁 & Session 簡介 & 登入login驗證 & 隱碼攻擊injection & 工具箱程式碼片段使用
      • 2019/0520/繼承&存取權特性+java作業四+字符串格式化+多形+抽象類別
      • 2019/0521/抽象類別+介面
      • 2019/0522/Bootstrap Components 元件介紹 + MVC API 概念&實作
      • 2019/0523/IIS IP限制&ASP.NET部屬
      • 2019/0524/WebApi異質程式連線方式&第九次專題報告_循序圖
      • 2019/0528/Bootstrap Components 元件介紹 + MVC 登入驗證 + 商品加入購物車 實作
      • 2019/0529/ASP.NET_MVC購物車訂單功能完成+BootstrapComponents元件介紹
      • 2019/0530/原本是伺服器的課,但拿來做專題。
      • 2019/0531/ASP.NET_WebformAllView物件功能清單&ListView實作&第十次專案報告(完整循序圖)
    • 201906
      • 2019/0603/Bootstrap Components RWD End + ASP.NET_MVC Part2 PhotoSharing CodeFirst & Model 驗證
      • 2019/0604/ASP.NET_MVC Part2 PhotoSharing Controller & Filter & ADO.NET & View@RAZOR Helper
      • 2019/0605/Java介面實作&結束+安卓工作室(整合Layout與Java)Intent意圖&Bundle包裹
      • 2019/0606/第十一次專案報告功能demo+SingnaIR+伺服器作業+端午歌唱比賽
      • 2019/0609/黃大神傳授Visual_Studio&除錯技巧
      • 2019/0610/番外篇 Web Socket 即時連線& 就業前準備與技巧
      • 2019/0611/安卓工作室_(意圖+隱含意圖)資料傳遞+Android生命週期+硬體裝置與應用
      • 2019/0612/WebSockets Notification + MVC Part2 PhotoSharing PartialView & ADO.NET & EntitySQL & VMd
      • 2019/0613/MVC Part2 PhotoSharing ViewModel & ErrorHandle
      • 2019/0614/第十二次專案報告 功能Demo
      • 2019/0618/MVC Part2 PhotoSharing Route & Sitemap & _LayOut & AJAX
      • 2019/0618/RWD在職班_(Javascript_object-oriented programming)
      • 2019/0619/安卓工作室_(硬體裝置與應用)相機操作&GPS+階段性作業6+延伸 ( APP End )
      • 2019/0620/MVC補充C#MS SQL匯入CSV+上傳CSV存入MS SQL
      • 2019/0621/第十三次專案報告 功能Demo
    • 2019/0701/最終專案報告
    • 2019/0702/結訓與家人遊台東預計0708開始找工作自學筆記應該會等工作穩定後繼續開始
  • 自學里程碑
    • 201901
      • 2019/0107/DR
      • 2019/0108/UW
      • 2019/0103/Git
      • 2019/0103/CS
      • 2019/0115/Vscode
      • 2019/0116/JSON&AJAX
      • 2019/0122/卡內基
      • 2019/0126/MBTI
      • 2019/0131/PDP 外在 內在
    • 201902
      • 2019/0217/huli_half Developer
      • 2019/0219/SEO
      • 2019/0219/雪球速讀法
    • 201903
      • 2019/0304/asp、php、jsp、asp.net、net. Framework、asp.net core
      • 2019/0329/網站架站初嘗試
    • 201904
      • 2019/0415/Datatype-Explanation
      • 2019/0416/ASP.NET_Webform&Core&MVC(MVVM/MVP)
    • 201905
      • 2019/0613/開發職訓局共同專案時遇到的問題與解法
      • 2019/0514/ASP.NET SignalR
      • 2019/0514/JS擴展-JQ、React、Vue、Angular...
      • 2019/0514/Sass&Scss
      • 2019/0514/MVC結合Webform
      • 2019/0515/ASP.NET MVC_TempData/ViewData/ViewBag
      • 2019/0522/[自學筆記]海綿體啟蒙??
Powered by GitBook
On this page
  • #資料庫設計與應用
  • 交易
  • 交易生命週期
  • acid 四大特性
  • ##隱含交易模式 - 有錯 自動ROLLBACK
  • ##明顯交易處理
  • ##併型控制
  • ##網路要再加強 可以去查隔壁課程大綱自己看一下
  • ##效能條教 - 補充 ( 上一個班沒講 我們賺到
  • #下午MVC
  • ##homeController ( 純控制器無v無m
  • ##簡單資料繫結 simplebind
  • ##Razor 技巧 到底什麼時候要+@?
  • ##複雜繫結complexbind

Was this helpful?

  1. 職訓局里程碑
  2. 201904

2019/0430/資料庫設計應用效能調教_SQL all end&ASP.NET_MVC_Controller單元_純C無V無M操作/簡單複雜繫結

Previous2019/0429/物件導向技術原理方法實作Next201905

Last updated 6 years ago

Was this helpful?

#資料庫設計與應用

##交易處理

有些東西跳過沒講

可以看這個

交易

只有兩種可能性成功或失敗

且是

一筆一筆交易的互相較不干涉

唯一有錯的是明細關聯資料錯誤一筆就會影響另外一筆 ( 參考完整性遺失

必須寫程式說明資料為關聯同一筆一起更新一起刪除

交易生命週期

保證在後面過程當中 一但有錯誤就 roll back 回暫存資料

部分認可交易已到 trigger

考資料庫通常會考以下

acid 四大特性

1.邏輯概念當作一筆交易,而不是交易的數量或筆數

2.實體 值域 參考 完整性

3.避免同時一堆人在存取某一筆資料時發生的錯誤 ( 資料庫系統本身會處理

DNMS狀態過了通常就自動COMMIT但也可以手動指令

###交易模式範例

強迫 參考完整性 COUSTRINT FK錯誤 因為教授也是會員

必須也要刪除員工資料表的同一筆關聯資料

結果有人選教授的課整個根本不能刪,必須找到原頭

##隱含交易模式 - 有錯 自動ROLLBACK

但有一些學生是員工,但學生跟員工沒有關聯

用PK刪學生與員工資料,關聯不同基準點也不同

其實是兩筆交易會有不同可能性(成功 失敗 失敗 成功

此時就要將兩筆交易視為一筆交易

要使用

Begin  tran
第一筆交易
@@error 如果成功了此行的值就會是0
Begin
第二筆交易
@@error 如果成功
Commit
Else
rollback
End
Else
Rollback

不管幾次增刪修只會看到一次commit

因為只有所有確認都成功才會執行

但rollback就不止一次

第一筆交易如成功 會先塞在dbms 部分認可成功

然後等待第二筆

然後commit

##明顯交易處理

##併型控制

買飲料

先到買很多

後到買很少

處理方式

先做買很少的

效率優先 ( 伺服器/個人電腦最佳化排程 ( 減少平均等待時間

或

堅持原則先做先到的

先進先出 ( ATM

但伺服器多工呢 ( 可能不止 個位數的使用者

切成很多 time slot

輪流都做一點點 Q

排隊理論

為了讓效率提升結果資料安全性降低 這是絕對不可以的

再來一些例子

SQL SERVER 效能不如 歐洛摳 貴有貴的道理 ACCESS 更爛 更悲觀

樂觀就像乙太網路 CSMA/CD

碰撞偵測 一次只能允許一個封包 碰撞時封包直接丟掉 換下一次舉手

以前10M現在10G 邏輯一樣但技術一直上升

網路塞車 ( 舉手的人太多 碰撞機率太高 就一直重複舉手 看誰最快舉手

Netcut原理

Arp –a

Osi七層

Ip 第三

Mac第二detlinklayer 只認mac arp table紀錄傳送地址

封掉這個

因為乙太網路是用廣播的三項交握跟這個傳遞方式不同

##網路要再加強 可以去查隔壁課程大綱自己看一下

五個男生要追一個女生 大家都可以追

當女生決定跟一個男生再一起 其他四個無法追

但如果前面已經啟用共暫鎖定時要等待所有共暫鎖定處理完才能獨佔

藉由意圖像是資料碰撞偵測邏輯的樣子?? 還是隨機給一個有意圖的使用者

##效能條教 - 補充 ( 上一個班沒講 我們賺到

實務上的東西

Sql server 效能調教聖經 2000 - 2005

老師會的其實也是書上教的

資料讀取慢80%都是sql寫得不好

不要欄位做運算會運算八百萬次

也不要用

盡量避免用or

In>or

不要用not

子查詢效能差

應該要再 dataset 在記憶體裡面操作 別用 資料庫資料操作

預存程序是編譯過的 可以省時間

避免不必要的索引

#下午MVC

先從控制器C開始介紹後V再來M

M其實是最重要的能決定C跟V

上次是大架構

題外話:ftp

MVC專案裡面分為三個資料夾

會牽涉到namespace

只要沒有干涉到資料夾名稱就不用理會它

之前是m產c跟v

可是今天是只有c也是能執行,要看到介面只要有v就行

專案名稱可以數字開頭

但namespace 不可以所以會出現底線

繼承Controller

來自於system.web.mvc

Actionresult為資料型態 有return且名稱index()

也沒有跟類別名稱一樣所以也不是建構子

所以是方法

回傳值 資料型態為 actionresult 物件型態

http://xxxxx/controllerName/actionresult

然後靠位址去要東西

這裡是http://xxxxx/home/index

就算沒有v也能跟他提要求

##homeController ( 純控制器無v無m

Actionresult物件型態 是專門 return view的

所以再建立一種方法showarry() 型態為 string 公開的

裡面塞個陣列,宣告string 最後來回傳結果

宣告個int來做計算

寫foreach函式作加總

隱含轉換

最後回傳string

預覽會錯誤因為是呼叫index() function但裡面沒有對應的view檔案

所以用url呼叫另外一個我們剛寫的showarry() function

程式碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _01Contorller.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }

        //02-1-3 建立一般方法ShowAry()-計算陣列總合
        public string ShowArray()
        {
            int[] score = { 78, 99, 20, 100, 66 };
            string show = "";
            int sum = 0;

            foreach(var m in score)
            {
                show += m + ", ";
                sum += m;
            }

            show += ",加總結果:" + sum;

            return show;

        }

    }
}

//02-1 Controller撰寫練習-一般方法
//02-1-1 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//02-1-2 指定控制器名稱為HomeController,並開啟HomeController
//02-1-3 建立一般方法ShowArray()-計算陣列總合
//02-1-4 執行並測試 http://localhost:53468/Home/ShowArray (port可能不同)

以上變數為區域變數所以下一個funtion可以繼續宣告同名稱變數

接著在一個funtion做練習 將圖片累加然後叫出來

public string ShowImages()
        {

            string show = "";
            for (int i=1;i<=8;i++)
            {
                show += "<img src='../images/"+i+".jpg' />";
            }
            return show;
        }

上面兩個都是一般方法 沒傳參數的

以下做個有傳參數的

Format 這個方法中 Index 會轉到 {0} 這

如何傳參數給方法??

http://位址/位址?參數名稱=參數

控制器無法做多載??

最後程式碼與步驟

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _01Contorller.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }

        //02-1-3 建立一般方法ShowAry()-計算陣列總合
        public string ShowArray()
        {
            int[] score = { 78, 99, 20, 100, 66 };
            string show = "";
            int sum = 0;

            foreach(var m in score)
            {
                show += m + ", ";
                sum += m;
            }

            show += ",加總結果:" + sum;

            return show;

        }

        //02-1-5 建立一般方法ShowImages()-傳回顯示1.jpg~8.jpg的HTML字串
        public string ShowImages()
        {

            string show = "";
            for (int i=1;i<=8;i++)
            {
                show += "<img src='../images/"+i+".jpg' />";
            }
            return show;
        }

        //02-1-7 建立一般方法ShowImageIndex()-依index參數取得對應圖示與說明
        public string ShowImagesIndex(int index)
        {
            string[] name = { "櫻桃鴨", "鴨油高麗菜", "鴨油麻婆豆腐", "櫻桃鴨握壽司", "片皮鴨捲三星蔥", "三杯鴨", "櫻桃鴨片肉", "慢火白菜燉鴨湯" };
            string show = string.Format("<p align='center'><img src='../images/{0}.jpg' /><br />{1}</p>", index, name[index - 1]);

            return show;
        }

    }
}

//02-1 Controller撰寫練習-一般方法
//02-1-1 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//02-1-2 指定控制器名稱為HomeController,並開啟HomeController
//02-1-3 建立一般方法ShowArray()-計算陣列總合
//02-1-4 執行並測試 http://localhost:53468/Home/ShowArray (port可能不同)
//02-1-5 建立一般方法ShowImages()-傳回顯示images資料夾裡1.jpg~8.jpg的HTML字串
//02-1-6 執行並測試 http://localhost:53468/Home/ShowImages (port可能不同)
//02-1-7 建立一般方法ShowImageIndex()-依index參數取得對應圖示與說明
//02-1-8 執行並測試 http://localhost:53468/Home/ShowImageIndex?index=1 (port可能不同)

##簡單資料繫結 simplebind

跟model有關繫

第一個新增是指get 做給view的

creat()

另一個是post 丟資料到資料庫去的

[httppost] creat(參數)

沒有m產生v的精靈方式

沒有套版面配置所以較偏純html

如果要把資料送出去

一定要有form ( Webform是要傳回server去編譯的

Method =”post” 這樣才會去找 httppost

Action=”/SimplaeBind/Create” 給去哪找action

但通常在view這邊要盡量不要寫死

利用Razor方式寫利用helper物件抓位址

<form method=”post” action=”@Url.Action(“Create”)”></form>

重點來了 輸入元件的name取的跟對應的action的參數名稱一樣就會自動綁定

Id雖然是給前端用的會取跟給後端用的name同樣的名稱避免麻煩

因為要傳資料要給type(但要看使用者瀏覽器支援不支援html5不然就要寫驗證

必填欄位所以加上 required

接著給一個傳遞按鍵

接著模擬送出後的回應

但要先去寫後端 control

利用 viewbag 保留狀態

通常送出後表單的值會被清空,要利用viewbag暫存顯示

接著把資料丟到 viewbag內

再回到前端view

利用razor寫helper將後端背包裡面的東西取出來

##Razor 技巧 到底什麼時候要+@?

指定@{ } 括弧內不用加 但是如果 <htmltag>@{}</htmltag>

被html包覆就要重新宣告 razor 區域

Webform會幫你預設保留狀態 就是純html裡面的封裝過的亂碼 viewstate

http正常是走 request response 資料傳過去後端時前端資料就會消失

mvc 就是正常http狀態 不會預設保留

保留必須要寫 例如說 把viewbag裡面的東西回傳給 text

MVC網頁狀態處理元件 viewbag station??

程式碼

前端 create view

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>產品新增</title>
</head>
<body>

    @*<form method="post" action="/SimpleBind/Create">*@
    <form method="post" action="@Url.Action("Create")">
        <h2>產品增作業</h2>
        <div>
            <p>編號:<input id="PId" name="PId" type="text" value="@ViewBag.PId" required /></p>
            <p>品名:<input id="PName" name="PName" type="text" value="@ViewBag.PName" required /></p>
            <p>單價:<input id="Price" name="Price" type="number" value="@ViewBag.Price" required /></p>
            <p><input id="Submit1" type="submit" value="新增商品" /></p>
            <hr />
            @{ 
                if(ViewBag.PId!=null && ViewBag.PName!=null && ViewBag.Price!=null)
                {
                    <h2>產品增作業完成!!!!</h2>
                    <h3>編號:@ViewBag.PId, 品名:@ViewBag.PName, 單價:@ViewBag.Price</h3>
                }
            }
        </div>


    </form>

   
</body>
</html>


後端 simplebindcontroller


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _01Contorller.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }

        //02-1-3 建立一般方法ShowAry()-計算陣列總合
        public string ShowArray()
        {
            int[] score = { 78, 99, 20, 100, 66 };
            string show = "";
            int sum = 0;

            foreach(var m in score)
            {
                show += m + ", ";
                sum += m;
            }

            show += ",加總結果:" + sum;

            return show;

        }

        //02-1-5 建立一般方法ShowImages()-傳回顯示1.jpg~8.jpg的HTML字串
        public string ShowImages()
        {

            string show = "";
            for (int i=1;i<=8;i++)
            {
                show += "<img src='../images/"+i+".jpg' />";
            }
            return show;
        }

        //02-1-7 建立一般方法ShowImageIndex()-依index參數取得對應圖示與說明
        public string ShowImagesIndex(int index)
        {
            string[] name = { "櫻桃鴨", "鴨油高麗菜", "鴨油麻婆豆腐", "櫻桃鴨握壽司", "片皮鴨捲三星蔥", "三杯鴨", "櫻桃鴨片肉", "慢火白菜燉鴨湯" };
            string show = string.Format("<p align='center'><img src='../images/{0}.jpg' /><br />{1}</p>", index, name[index - 1]);

            return show;
        }

    }
}



//02-2 簡單模型繫結
//02-2-1 在Controllers資料夾上按右鍵,加入,控制器,選擇 MVC5Controller-Empty
//02-2-2 指定控制器名稱為SimpleBindController,並開啟SimpleBindController
//02-2-3 建立GET與POST的Create方法
//02-2-4 在public ActionResult Create()上按右鍵,新增檢視,建立Create View
//02-2-5 進行下列設定:
//       View name:Create
//       Template:Empty(without model)
//       不勾選Use a layout pages
//       按下Add
//02-2-6 修改title文字與加入form內容
//02-2-7 執行並測試 http://localhost:53468/SimpleBind/Create (port可能不同)

##複雜繫結complexbind

簡單繫結是 前端NAME 與 後端參數NAME

但當參數很多的時候不就一堆

複雜繫結是配合M複雜繫結會相對於簡單繫結方便

首先在M新增class 其實 model ADO.net也是 class

再來再新增一個控制器

簡單繫結跟複雜主要是差在傳參數方式

藉由剛剛新增的類別直接傳入

然後view不用動 但是 name 必須前端name跟後端控制器name一樣

建構子是建構子,funtion是funtion,class是class

程式碼

前端 create view

@{
    Layout = null;
}
@*//02-2-6 修改title文字與加入form內容*@
<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>產品新增</title>
</head>
<body>

    @*<form method="post" action="/SimpleBind/Create">*@
    <form method="post" action="@Url.Action("Create")">
        <h2>產品增作業</h2>
        <div>
            <p>編號:<input id="PId" name="PId" type="text" value="@ViewBag.PId" required /></p>
            <p>品名:<input id="PName" name="PName" type="text" value="@ViewBag.PName" required /></p>
            <p>單價:<input id="Price" name="Price" type="number" value="@ViewBag.Price" required /></p>
            <p><input id="Submit1" type="submit" value="新增商品" /></p>
            <hr />
            @{
                if (ViewBag.PId != null && ViewBag.PName != null && ViewBag.Price != null)
                {
                    <h2>產品增作業完成!!!!</h2>
                    <h3>編號:@ViewBag.PId, 品名:@ViewBag.PName, 單價:@ViewBag.Price</h3>
                }
            }
        </div>


    </form>


</body>
</html>

後端complexbindcontroller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using _01Contorller.Models;

namespace _01Contorller.Controllers
{
    public class ComplexBindController : Controller
    {
        // GET: ComplexBind
        //public ActionResult Index()
        //{
        //    return View();
        //}

        //02-3-6 建立GET與POST的Create方法
        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(Product p)
        {
            ViewBag.PId = p.PId;
            ViewBag.PName = p.PName;
            ViewBag.Price = p.Price;

            return View();
        }


    }
}

類別模組
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace _01Contorller.Models
{
    public class Product
    {
        public string PId { get; set; }
        public string PName { get; set; }
        public string Price { get; set; }
    }
}
webform viewstate - Google SearchGoogle
https://data-sci.info/2015/10/24/%E5%B8%B8%E8%A6%8B%E7%9A%84http-method%E7%9A%84%E4%B8%8D%E5%90%8C%E6%80%A7%E8%B3%AA%E5%88%86%E6%9E%90%EF%BC%9Agetpost%E5%92%8C%E5%85%B6%E4%BB%964%E7%A8%AEmethod%E7%9A%84%E5%B7%AE%E5%88%A5/data-sci.info
Logo
new 建構子 時機 - Google SearchGoogle
Logo
request response - Google SearchGoogle
Logo
post get - Google SearchGoogle
Logo