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. ...
随机推荐
- js中取小数整数部分函数;取小数部分
1.丢弃小数部分,保留整数部分 parseInt(23.56); 结果:23 2.向上取整,有小数就整数部分加1 Math.ceil(23.56) 结果:24 3,四舍五入. Math.round(2 ...
- struts工作原理不错的解释___
Struts 使用 Model 2 架构.Struts 的ActionServlet 控制导航流.其他Struts 类,比如Action, 用来访问业务逻辑类.当 ActionServlet 从容器接 ...
- 纯CSS3打造非常炫的加载动画
纯css3打造的一款非常炫的加载图.用在需要一定时间加载的地方非常合适.先上效果图: 点击这里在线预览 代码非常简单.没有用任何javascript代码.纯css3实现. html代码: <di ...
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io .nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
首先,遇到这个问题的一个原因是windows环境中没有配置hadoophome.配置之后加入winutils工具 第二个原因,pom中执行的hadoop的版本与window环境中的hadoop的版本不 ...
- JavaScript 中 类型转换
转自 https://www.cnblogs.com/wuxiaoshang/p/5835627.html // 转换成字符型 var married = false; alert(married.t ...
- 【转】android学习日记01--综述
转自:http://www.cnblogs.com/aiguozhe/p/3541941.html 一.总体框架 先上一张google提供官方的Android框架图: Android系统架构由5部分组 ...
- [LeetCode]460.LFU缓存机制
设计并实现最不经常使用(LFU)缓存的数据结构.它应该支持以下操作:get 和 put. get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1.put(key, valu ...
- RavenDb学习(七) 异步工作以及维度查询
.异步执行 var entity = new Company {Name = "Async Company #2", Id = "companies/2"}; ...
- openvpn之EasyRSA配置篇
cd EasyRSA-2.2.2 vi vars #红色加粗的表示是我们需要修改的,其它的保持默认就可以 export EASY_RSA="`pwd`" export OPENSS ...
- MVC教程九:异常过滤器
我们平常在程序里面为了捕获异常,会加上try-catch-finally代码,但是这样会使得程序代码看起来很庞大,在MVC中我们可以使用异常过滤器来捕获程序中的异常,如下图所示: 使用了异常过滤器以后 ...