提到Mvc传值我想大多数人想到的是ViewBag,自3.0之后在控制器与视图之间传值绝大多数传值用到的对象就是ViewBag。对于笔者以前做过的一些小的项目,貌似不需要考虑什么,但对于稍微大些的项目涉及到多个字段需要传递的时候我们就不得不考虑一下了。我们总不能把要传递的变量全放到viewbag中吧,可以想象一下一长列ViewBag赋值是件很恐怖的事,不仅代码冗长,且没有智能感识。首先想到的解决方案就是将所有的变量放到一个对象中,使用强类型视图,然后我们就可以很方便的在视图中利用智能感识访问我们想要的值。需要提及的是,在我们放在变量中的很多字段或对象中常常包含一些复合对象,笔者推荐两种方式处理这个问题:一,若相应复合对象在视图中多次被用到,建议将该对象放到ViewBag中然后中视图中进行类型转化,这样书写简便同时也能获得智能感识;二,可以采用对象组合的方式,直接将该对象作为这个强类型的一个字段。至于采用上述哪种方式就需要读者自己把握了,然而还有些变量最好也要单独放到ViewBag中,那些变量呢?这就要涉及到那些ViewBag中视图与母版页局部视图之间的传递顺序规则了。中mvc将一个对象放到ViewBAg中后,首先自然是该控制器对应的视图会先行获得该值,然后会中模板页中可以访问到,再然后可以中局部视图中可以访问到,这个局部视图必须是通过RenderPartial方式渲染的才可以访问主视图中的ViewBag,否则仅可以访问本视图或对应于本视图的控制器储存在ViewBag中的值。根据这个顺序,如果我们的主视图中引用了较多的视图的话,建议把那些需要在多个视图中访问的对象也放在ViewBag中。

Mvc传值的更多相关文章

  1. MVC 传值

    1.ViewBag    Controller:ViewBag.Message = "Hello, Word";    View:@ViewBag.Message   注:View ...

  2. MVC传值汇总

     方法一: Url传参是通过Get的方式,一般我们都是通过一定规则的Url来传参.比如下面的URL. http://localhost/contorller/action/?Params1=a& ...

  3. Core Mvc传值Query、Form、Cookies、Session、TempData、Cache

    1.传值方法 使用Request的方法(1-3): 1)Query:获取链接?后面的值 如:http://localhost:55842/Home/About?name=kxy public IAct ...

  4. ASP.NET MVC 传值方法ViewData与ViewBag的区别

    一.介绍 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类 ...

  5. MVC传值方式及优缺点

    说在前面文章转自 http://www.cxyclub.cn/n/49493/ 在MVC控件器传递多个Model到视图,使用ViewData,ViewBag,部分视图,TempData,ViewMod ...

  6. Core Mvc传值ViewData、ViewBag和return view(model)

    先定义一个Model类Student namespace Lession.Models { public class Student { public string Name { get; set; ...

  7. asp.net mvc 传值

    视图的查找 asp.net MVC 不需要用using 释放资源

  8. Spring MVC传值乱码解决

    在web.xml中进行配置,加入以下代码: <!-- 乱码解决 --> <filter> <filter-name>characterEncodingFilter& ...

  9. MVC传值前台

    ViewBag.model = bLL.GetModel((int)id); ViewBag.RecruitmentTime = ViewBag.model.RecruitmentTime.ToStr ...

随机推荐

  1. angularjs自动化测试系列之karma

    angularjs自动化测试系列之karma karma test with jasmine 更好的利用工具是为了让生活更美好. 需要安装的东西: npm install karma -g mkdir ...

  2. HTTP学习二:Web应用中的HTTP

    1 HTTP连接 1.1 TCP连接对性能的影响 TCP三次握手如下图: 如上图,建立一次TCP连接要经过三个步骤.HTTP是建立在TCP之上的,因此TCP连接的性能直接影响HTTP的性能. TCP影 ...

  3. Publication的 immediate_sync 属性

    Publication的属性 immediate_sync 控制 Snapshot 文件的创建,如果属性 immediate_sync设置为true,那么snapshot file在snapshot ...

  4. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  5. 【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  6. 使用jQuery Draggable和Droppable实现拖拽功能

    上篇博客中已经介绍了web开发中基本拖放原理,现在给出需要完成的功能.最后运行的效果如下图所示: 主要功能需求说明: 1.左侧的元素结构最后会通过Ajax call服务器的数据来生成,能支持多级元素. ...

  7. IOS开发之简单音频播放器

    今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...

  8. Hibernate学习之——搭建log4j日志环境

    昨天讲了Hibernate开发环境的搭建以及实现一个Hibernate的基础示例,但是你会发现运行输出只有sql语句,很多输出信息都看不见.这是因为用到的是slf4j-nop-1.6.1.jar的实现 ...

  9. C# 插入或删除word分页符

    C# 插入或删除word分页符 分页符是word中常用的一种分页的符号,它标志着上一页的结束和下一页的开始.在word中分页符有两种,一种是自动分页符,也叫软分页符,即一页数据写满以后转到下一页时wo ...

  10. Linux:Ubuntu16.04下创建Wifi热点

    Linux:Ubuntu16.04下创建Wifi热点 说明: 1.Ubuntu16.04里面可以直接创建热点,而不用像以前的版本,还要其他辅助工具. 2.本篇文章转载自编程人生 具体步骤如下: 1.  ...