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. ...
随机推荐
- ubuntu 解压命令
ubuntu解压命令.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————. ...
- spring InitializingBean
先说总结:1:spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中同过init-method指 ...
- S3C2440串口的基本使用
2440A有三个串口,我们使用串口0对它进行了解熟悉. 首先肯定是应该找到手册上串口0所对应的引脚,然后配置相应寄存器. 串口0对应GPIO H的 2,3 串口在单片机中我们已经有很多使用经验了,对于 ...
- mysql 常用指令集合
show variables ——显示系统变量(扩展show variables like 'XXX') 在MYSQL的主从复制中 ,通过命令show master status,可以查看maste ...
- Mybatis缓存理解
缓存 接触过hibernate的同学都知道hibernate中有个二级缓存,mybatis也存在二级缓存.mybatis中二级缓存有什么作用呢?mybatis提供查询缓存,可以提高查询效率,减轻数据库 ...
- Maven 统一指定jar包版本的方法
在看别人的源码的过程中,会遇到这种情况,就是很多jar包没有指定版本,却能够下载下来. 在后来的研究中发现,有这样一个配置. <parent> <groupId>org.spr ...
- poj3073
比赛状态堪忧,笑看自己找不着北.. 把心态放好吧- - 反正窝从一開始就仅仅是为了多学习才上道的 至少已经从学习和智商上给窝带来了一些帮助 智商带不动,好辛苦----(>_<)---- 说 ...
- 主流HTML5游戏框架的分析和对比
本文主要选取了Construct2.ImactJS.LimeJS.GameMaker.CreateJS.lycheeJS.Crafty.three.js.melonJS.Turbulenz.Quint ...
- 无法转换json问题 Error: Model.nodeDataArray value is not an instance of Array or NodeList or HTMLCollection
var jsonobj=eval('('+t+')'); 使用eval 函数,讲后台json字符串转换为前台jsarray数组. 如果使用 ajax不会出现这种情况,因为会自动转换. 但是如果直接从后 ...
- 【转】MYSQL数据库四种索引类型的简单使用--MYSQL组合索引“最左前缀”原则
MYSQL数据库索引类型包括普通索引,唯一索引,主键索引与组合索引,这里对这些索引的做一些简单描述: (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 ...