一:后台使用SelectListItem 傳值給前台顯示Select下拉框
我們先來看數據庫的訂單表,里面有3條訂單,他們的用戶id對應了 UserInfo用戶表的數據,現在我們要做的是添加一個Order控制器,顯示訂單列表,並且在修改訂單的時候,把用戶的id 用 select 下拉框顯示出來,並且可以提交修改數據
1.1 我們通過比較原始的方法,來把數據 傳遞到前台后,前台使用 循環來顯示 select 並且顯示是哪個元素被選中
我們在前台的cshtml中,使用 @model 命令 指定當前的 Model類型為 order強類型,這樣的好處就是方便VS編輯器能直接點出來屬性
最后html顯示為
這種方法比較老土,我們結合 SelectListItem 傳值給前台顯示Select下拉框
1.2 SelectListItem 傳值給前台顯示Select下拉框
這樣就搞定了.
二:mvc后台Action接收瀏覽器傳值的4種方式;
現在,我們來實現修改,順便復習 mvc后台Action接收瀏覽器傳值的4種方式;
1:使用 數據綁定機制,當前台傳遞過來的數據和后台的類型相同的時候,MVC會自動去匹配相同的名稱,並且賦值.例如前台有 Id傳遞給后台,剛好Order類有Id屬性,那么就會賦值給后台,這一個過程包含有 反射
2:原始的 Request.Form 或者是 Request.QueryString
3:如果傳遞過來的參數是 FormCollection form 集合的話,就直接用 form["key"] 來獲取
4:根據路由表里面的 路由規則,進行匹配 這里剛好id就是路由里面的占位符id ,那么就會進行賦值
三: 后台Action向前台View視圖傳遞數據的四種方式
第1種,通過 ViewBag 傳值給前台View視圖
第2種,通過 ViewDate 傳值給前台View視圖
第3種,通過 TempDate 傳值給前台View視圖
第4種,通過 return View( 這里有個值) 傳遞 model 給前台View視圖 (實際是通過 ViewDate.Model 傳遞給前台View視圖 )
為什么 后台Action中 傳遞 這4種方法,前台就有對應的4種獲取數據的方法呢?
我們首先來看我們的 OrderController 里面的 Action里面的 Return View方法,這個方法是繼承自父類 Controller里面的方法,這個方法,就幫我們解釋了 為什么會傳遞 model , ViewDate 和 TempDate數據
那 還有個 ViewBag 呢? 我們找到 Controller 的父類 ControllerBase, 里面就有 ViewBag 這個
那么這是后台里面的 4個傳遞數據的屬性,我們去前台看看 . 首先我們看看返回值 ActionResult, 發現這是個 抽象類,那么具體的實現是由其他子類來實現的,我們找一個其中的 ViewResult類
打開 ViewResultBase 就能明顯的看到,4種傳遞的方式了,其中 Model對象是由 ViewDate.Model 來傳遞的.
這樣就很直接的看到,后台4種方式和前台的4種方式了,至於這中間是怎么一個賦值的方式,這個要看MVC的源碼..這里就不展開了













