EF5+MVC4系列(7) 后台SelectListItem傳值給前台顯示Select下拉框;后台Action接收瀏覽器傳值的4種方式; 后台Action向前台View視圖傳遞數據的四種方式(ViewDate,TempDate,ViewBag,Model (實際是ViewDate.Model傳值))


一:后台使用SelectListItem 傳值給前台顯示Select下拉框

我們先來看數據庫的訂單表,里面有3條訂單,他們的用戶id對應了 UserInfo用戶表的數據,現在我們要做的是添加一個Order控制器,顯示訂單列表,並且在修改訂單的時候,把用戶的id 用 select 下拉框顯示出來,並且可以提交修改數據

image

 

1.1 我們通過比較原始的方法,來把數據 傳遞到前台后,前台使用  循環來顯示 select 並且顯示是哪個元素被選中

image

我們在前台的cshtml中,使用 @model 命令 指定當前的 Model類型為 order強類型,這樣的好處就是方便VS編輯器能直接點出來屬性

image

最后html顯示為

image

 

這種方法比較老土,我們結合 SelectListItem 傳值給前台顯示Select下拉框

1.2 SelectListItem 傳值給前台顯示Select下拉框

image

image

這樣就搞定了.

二:mvc后台Action接收瀏覽器傳值的4種方式;

現在,我們來實現修改,順便復習 mvc后台Action接收瀏覽器傳值的4種方式;


1:使用 數據綁定機制,當前台傳遞過來的數據和后台的類型相同的時候,MVC會自動去匹配相同的名稱,並且賦值.例如前台有 Id傳遞給后台,剛好Order類有Id屬性,那么就會賦值給后台,這一個過程包含有 反射
2:原始的 Request.Form 或者是 Request.QueryString
3:如果傳遞過來的參數是  FormCollection form 集合的話,就直接用 form["key"] 來獲取
4:根據路由表里面的 路由規則,進行匹配  這里剛好id就是路由里面的占位符id ,那么就會進行賦值

image

 

三: 后台Action向前台View視圖傳遞數據的四種方式


第1種,通過 ViewBag     傳值給前台View視圖 
第2種,通過 ViewDate    傳值給前台View視圖 
第3種,通過 TempDate    傳值給前台View視圖 
第4種,通過 return View( 這里有個值)  傳遞 model 給前台View視圖 (實際是通過 ViewDate.Model 傳遞給前台View視圖 )

image

為什么 后台Action中 傳遞 這4種方法,前台就有對應的4種獲取數據的方法呢?

我們首先來看我們的 OrderController 里面的 Action里面的 Return View方法,這個方法是繼承自父類 Controller里面的方法,這個方法,就幫我們解釋了 為什么會傳遞 model  , ViewDate 和  TempDate數據

image

還有個 ViewBag 呢? 我們找到 Controller 的父類  ControllerBase, 里面就有 ViewBag 這個

image

那么這是后台里面的 4個傳遞數據的屬性,我們去前台看看  . 首先我們看看返回值 ActionResult, 發現這是個 抽象類,那么具體的實現是由其他子類來實現的,我們找一個其中的  ViewResult類

image

image

打開 ViewResultBase 就能明顯的看到,4種傳遞的方式了,其中 Model對象是由 ViewDate.Model 來傳遞的.

image

這樣就很直接的看到,后台4種方式和前台的4種方式了,至於這中間是怎么一個賦值的方式,這個要看MVC的源碼..這里就不展開了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM