MVC中的Controller不能直接的訪问View层中的控件,那么是怎样的将Controller中值传到View中,经常使用的有4种

ViewData:

是获取或设置视图的字典对象,它里面存放的是键值对,就能够通过键来获得值。

注意:它的生命周期和View同样。仅仅对当前的Action有效。

使用ViewData从Controller向View层传递数据显示:

在Controller中
public ActionResult Index()
{
ViewData["key"] = "我是通过键获得的值";
return View();
}
在View中
<div>
@* 通过控件显示,须要注意的是必须使用和ViewData中一样的key名字 *@
@Html.TextBox("key")@*在textbox中显示*@
@Html.TextArea("key")@*在输入框中显示*@ @* 直接显示 *@
@ViewData["key"] </div>

显示效果:

TempData:

它的用法和ViewData同样。仅仅是TempDate能够再全部的View中訪问,能够再不同的Action之间传值。有点类似Session。TempData的生命周期是一个http请求的时间,及从一个页面跳转到还有一个页面的时间。

在Controller中
public ActionResult Index()
{
TempData["value"] = "TempDate測试-杨晓菲";
return View();
}
public ActionResult Index1()
{
TempData["value1"] = TempData["value"].ToString();
return View();
}

显示效果:

显示的效果如上,可是须要注意的是,由于Index1中的数据是从Index中来的。所以要想显示出效果。必须在訪问Index1之前先訪问Index,否则就无法显示。

并且还须要注意的是在使用TempData在不同Action之间传值时,不能提前使用。

比方在上例中要想在Inde1的View中显示TempData的值,在Index中的View中就不能使用TempData,由于TempData的生命周期是一次http请,假设在Index中使用就相当一次请求。在Index1中使用就会清空就无法显示。

ViewBag:

是一个动态属性,就是我们能够自己给ViewBag写属性。

在Controller中
public ActionResult Index()
{
//当中的name和value都是给ViewBag动态加入的属性
ViewBag.name = "MVC";
ViewBag.value = "传值";
return View();
}
在html中:
<div>
@* 通过控件显示 ,使用时注意属性名*@
@Html.TextBox("name")
@Html.TextArea("value")
@* 直接显示 *@
@ViewBag.name
@ViewBag.value
</div>

显示效果:

Model:

MVC本身带着Model层,当中能够使用EF映射相应的数据库,当中依据数据库生成的实体能够直接的传值。这事实上就是三层中的实体层。

在Controller中
public ActionResult Index1()
{ MvcTest.Models.news news = new news();//实例化实体
news.title = "社会新闻";
news.content = "最热的新闻";
return View(news);
}

然后给Index1 加入视图

在View中自己主动生成代码

显示效果例如以下:


Json

                 Json返回的是字符串。在字符串中获取须要的字view中进行显示
在Controller中                                                                                                                                                       ISetUpBll setUpInfo = SpringHelper.GetObject<ISetUpBll>("SetUpBll");
List<MenuByBatchViewModel> FileWagesAdvanced = setUpInfo.QuerySeniorByName("档案工资"); //得到一个list
return Json(FileWagesAdvanced, JsonRequestBehavior.AllowGet);//将得到的list依次的转换为json字符串

在view中。这里是结合EasyUI显示的。当中的field就是json串中的标识符,相应的行显示的就是那个字段的值,

columns: [[
{ field: 'ck', checkbox: true },
{ title: '档案编号', field: 'ID', sortable: true },
{ title: '姓名', field: 'name', sortable: true },
{ title: '性别', field: 'sex', sortable: true },
{ title: '身份证号', field: 'idNumber', sortable: true }
]]

显示效果:

       

小结

MVC刚開始仅仅对它有个了解。在实际的使用了解到Controller和View之间的传值是MVC比較重要的知识点。学习就是这样一个过程先知道一个东西然后再開始了解这个东西相关的知识,等熟悉了之后就開始跟我们学过的知识进行比較,一点一点的掌握。

MVC中从Controller像View层传值的更多相关文章

  1. MVC中的Controller

    Controller是MVC模式中的三个核心元素之一. MVC模式中的Controller主要负责响应用户的输入, 并在响应时修改Model. MVC提供的是方法调用的结果, 而不是动态生成的页面. ...

  2. SSH框架——(二)四层结构:DAO,Service,Controller,View层

    1. DAO层: 主要任务:做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此. DAO层的设计:首先是设计DAO层的接口,然后再Spring的配置文件中定义此接口的实现类,然后就可以在模块 ...

  3. ASP.NET MVC中controller和view相互传值的方式

    ASP.NET MVC中Controller向view传值的方式: ViewBag.ViewData.TempData 单个值的传递 Json 匿名类型 ExpandoObject Cookie Vi ...

  4. ASP.NET MVC中Section、Partial View 和 Child Action(转载)

    概括的讲,View中的内容可以分为静态和动态两部分.静态内容一般是html元素,而动态内容指的是在应用程序运行的时候动态创建的内容.给View添加动态内容的方式可归纳为下面几种: Inline cod ...

  5. Asp.net mvc 中的 Controller 的激活

    Controller 激活是指根据路由系统解析出来的 Controller 的名称创建 控制器(Controller)的过程,这里的控制器泛指实现了 IController 接口的类型 激活过程中的核 ...

  6. ASP.NET Core MVC 中的 [Controller] 和 [NonController]

    前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...

  7. 在ASP.NET Core MVC中子类Controller拦截器要先于父类Controller拦截器执行

    我们知道在ASP.NET Core MVC中Controller上的Filter拦截器是有执行顺序的,那么如果我们在有继承关系的两个Controller类上,声明同一种类型的Filter拦截器,那么是 ...

  8. Spring MVC中的Controller是Serlvet吗?

    1. Controller不是Servlet DispatcherServler是Spring MVC中的唯一Servlet,(这点可通过查看FrameworkServlet的子类确认) Servle ...

  9. MVC从Controller到view进行传值的方法

    这几天基本上都是交接的一些杂事,没有什么工作任务,就有空来回顾一下MVC.虽然工作中也用到了MVC,但已经被微软的架构师设计的找不到MVC的影子了,可能有别的考虑吧,至今还没研究出来.所以,今天就来回 ...

随机推荐

  1. python基础——2(基本数据类型及运算符)

    目录 为何数据要区分类型? 一.数字类型 1.整型int 2.浮点型float 二.字符串str 三.列表类型list 四.字典类型 五.布尔类型 运算符的介绍 一.算术运算符 二.比较运算符 三.赋 ...

  2. ExtJs 滚动条问题

    bodyStyle :'overflow-x:visible;overflow-y:scroll', //隐藏水平滚动条 通过这个方法可以显示或隐藏滚动条 var form = new Ext.for ...

  3. Python+selenium鼠标、键盘事件

    鼠标操作 现在的Web产品提供了丰富的鼠标交互方式,例如鼠标右击.双击.悬停.甚至是鼠标拖动等功能,在Webdriver中,将这些关于鼠标操作的方法封装在ActionChains类提供. 1.鼠标右击 ...

  4. ZOJ3860-Find the Spy

    Find the Spy Time Limit: 2 Seconds      Memory Limit: 65536 KB Whoooa! There is a spy in Marjar Univ ...

  5. HDU 2222 最简单的AC自动机套模板应用

    HDU 2222 题意:给出N(N<=10,000)个单词,每个单词长度不超过50.再给出一个字符串S,字符串长度不超过1,000,000.问有多少个单词出现在了字符串S中.(单词可能重复,单词 ...

  6. hdu1588:Gauss Fibonacci

    对每个0<=i<n求f(g(i))的和,其中f(x)为斐波那契数列第x项,g(i)=k*i+b,k,b,n给定,模数给定. 斐波那契数有一种用矩阵乘法求的方法,这个矩阵A自己写,令F[i] ...

  7. URAL 1614. National Project “Trams” [ 构造 欧拉回路 ]

    传送门 1614. National Project “Trams” Time limit: 0.5 secondMemory limit: 64 MB President has declared ...

  8. React Native资料汇总

    React Native 官方文档中文版翻译 http://wiki.jikexueyuan.com/project/react-native/homepage.html REACT NATIVE开发 ...

  9. THUPC2017看题总结

    THUPC2017 看题总结 #2402. 「THUPC 2017」天天爱射击 / Shooting 果题. 求当前子弹能会使多少块木板损坏,发现因为木板会随着子弹数目的增加而更加容易损坏,故此询问具 ...

  10. 3469 [POI2008]BLO-Blockade

    洛谷—— P3469 [POI2008]BLO-Blockade 题目描述 There are exactly  towns in Byteotia. Some towns are connected ...