EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))
一:后台使用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的源码..这里就不展开了
EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))的更多相关文章
- .NET MVC控制器向视图传递数据的四种方式
.NET MVC控制器向视图传递数据的四种方式: 1.ViewBag ViewBag.Mvc="mvc"; 2.ViewData ViewBag["Mvc"] ...
- 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...
- 解决select下拉框禁用(设置disabled属性),后台获取值为空
如果下拉框设置disabled属性后,提交表单到后台,后台获取的下拉框的值为空,以下有三种解决获取不到下拉框选项值的方法. 有下拉框html如:<select name="select ...
- Django forms表单 select下拉框的传值
今儿继续做项目,学习了Django的forms生成前端的代码. forms.py class SignupForm(forms.Form): username = forms.CharField(va ...
- jquery 根据后台传过来的值动态设置下拉框、单选框选中
更多内容推荐微信公众号,欢迎关注: jquery 根据后台传过来的值动态设置下拉框.单选框选中 $(function(){ var sex=$("#sex").val(); va ...
- Selenium系列(十) - 针对Select下拉框的操作和源码解读
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- MVC小系列(十七)【自定义验证规则给下拉框】
因为下拉框不支持验证,所以写一个attribute特性,让它继承ValidationAttributemvc的特性验证,很直接,无论是数据安全特性上还是页面表现上都不错,它的运行机制: 前台表单验证规 ...
- SpringMVC之ajax+select下拉框交互常用方式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 在不同Activity之间传递数据的四种常用方法
在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4. ...
随机推荐
- iOS 10.3.3 更新背后的故事
iOS 10.3.3 更新背后的故事 TLDR:赶紧升级! 苹果最近提示大家将系统升级到 iOS 10.3.3,并且描述这个更新的内容是:修复和改进安全性. iOS 10.3.3 includes b ...
- Kudu:支持快速分析的新型Hadoop存储系统
Kudu 是 Cloudera 开源的新型列式存储系统,是 Apache Hadoop 生态圈的新成员之一( incubating ),专门为了对快速变化的数据进行快速的分析,填补了以往 Hadoop ...
- LeetCode: Minimum Depth of Binary Tree 解题报告
Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum depth is the n ...
- Android创建并响应选项菜单
创建options menu 之前提到,Android的activity已经为我们提前创建好了android.view.Menu对象,并提供了回调方法onCreateOptionsMenu(Menu ...
- Deepin Linux修改Grub引导
grub rescue> 模式修复 登录成功后, sudo upgrade-grub sudo install-grub /dev/sda 系统启动失败,修改fstab, 在grub系统选择界面 ...
- Android开发(八)——Android组件
参考: [1] Android开发教程:理解Intent和Intent Filter.http://liuzhichao.com/p/506.html
- Faiss教程:索引(1)
索引是faiss的关键知识,我们重点介绍下. 索引方法汇总 有些索引名,我就不翻译了,根据英文名去学习更准确. 索引名 类名 index_factory 主要参数 字节数/向量 精准检索 备注 精准的 ...
- setOnPageChangeListener 过时了怎么办?
今天使用ViewPager发现setOnPageChangeListener的方法竟然过期了.并且AS编译不通过了,最后查了一下原来把set换成add了,代码例如以下: setOnPageChange ...
- CSS一个元素同时使用多个类选择器(class selector)
CSS类选择器参考手册 一个元素同时使用多个类选择器 CSS中类选择器用点号表示.实际项目中一个div元素为了能被多个样式表匹配到(样式复用),通常div的class中由好几段组成,如<div ...
- js读取本地txt文件中的json数据
list.txt内容 [ {"optionKey":"1", "optionValue":"Canon in D"}, ...