Asp.Net Mvc 控制器与视图的数据传递
数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业务层获得一些数据,怎么传递到视图中,让视图显示在客户端呢?带着这些疑问,我们接着看。。
下面分别讲解asp.net mvc框架中有三种数据传递方式,分别是:ViewData,TempData,Model
ViewData:只能在一个动作方法中设置,在相关视图页面读取,说得再白一点就是只能在一个页面中使用。
例 在Act
ion方法中设置:ViewData["Message"]="Test";
在视图中读取: <%=Html.Encode(View["Message"]) %>
TempData:TempData
和ViewData有一点区别,ViewData只是单个视图有效,而TempData则是两个视图有效,就是说TempData是可以在两个视图中传递
的,如果中间没有更新TempData的值的话,那么从第二个视图显示之后,TempData所保存的数据就会丢失。(注:也就是说,只有更新过的,以及
新添加的键值对才能再下次request中继续使用),微软为什么要这样做呢,应该是为了节省资源吧!因为我们都知道http是无状态的,每次请求的时
候,他都要重新保存TempData的值(利用session保存,顺便提一下,asp.net mvc里面的session对象和web
from是一样的),但他又为了不想浪费资源,所以就只保存一次!使用方式和ViewData一致,就把ViewData关键字换成TempData即
可,在这里就不列出代码了!
Model:通过设置,读取ViewData和TempData属性,可以将数据从视图传到控制
器,也可以从控制器传到视图,看起来好像已经够用了,但必需说明的是ViewData和TempData都是弱类型的,所以编码的时候极容易出错。这时我
们可以通过在控制器的View()方法中,传递实例化的对象(例:View(类型)),传递实例化对象,由于是强类型原因,在视图读书时就有代码智能感
应,有利于代码的书写和减少错误!除了在Action里面View的返回时需要带上实例化对象外,在页面还需要设置,在Add View时,会弹出以下这个窗口

在用红色的线圈出来的下拉菜单中输入对象的类型即可,在页面使用的时候就直接[Model.属性]就可以了!
例:<%=Html.Encode(Model.Name) %>
接着我们看看怎么从视图把数据传到控制器,有好几种方式
第一:通过Request.Form读取表单
读取视图中文本框的值
例: <% =Html.TextBox("Name") %> 视图代码
Request.Form["Name"] ; 控制器中Action代码
第二:通过FormCollection读取
读取视图文本框的值
例: 视图代码
<% using (Html.BeginForm("About","Home"))
{ %>
<%=Html.TextBox("Name")%>
<input type="submit" value="submit" name="submit" />
<%}%>
控制器代码
public ActionResult About(FormCollection form)
{
string s = form["Name"];
return View();
}
Asp.Net Mvc 控制器与视图的数据传递的更多相关文章
- 【部分】Asp.Net Mvc 控制器与视图的数据传递
原文:https://www.cnblogs.com/lsgsanxiao/p/5105639.html 数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业 ...
- MVC中从控制器到视图的数据传递方法汇总
1.ViewData对象概述ViewData是一种字典集合数据,是"视图基类"和"控制器基类"的属性常见用法是在控制器中写入数据,在视图中读取数据ViewDat ...
- Asp.Net MVC控制器获取视图传值几种方式
前台表单(V:视图) @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="v ...
- ASP.NET MVC 控制器激活(二)
ASP.NET MVC 控制器激活(二) 前言 在之前的篇幅中,用文字和图像来表示了控制器的激活过程,描述的角度都是从框架默认实现的角度去进行描述的,这样也使得大家都可以清楚的知道激活的过程以及其中涉 ...
- 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器
MVC全称是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将 ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第七篇:为ASP.NET MVC应用程序 ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...
- 解析ASP.NET Mvc开发之删除修改数据
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 4)解析ASP.NET Mvc开发之EF延迟加载 ...
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符 ...
随机推荐
- best matched pair
今天的模拟赛,被虐的不行....英文太差,弄不懂题意,弄懂题意了还不会... 感觉快要受不了了... #include <iostream> #include <cstdio> ...
- AOP理解
1.问题 问题:想要添加日志记录.性能监控.安全监测 2.最初解决方案 2.1.最初解决方案 缺点:太多重复代码,且紧耦合 2.2.抽象类进行共性设计,子类进行个性设计,此处不讲解,缺点一荣俱荣,一损 ...
- 【leetcode】Palindrome Partitioning II(hard) ☆
Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...
- 【编程题目】有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A、B、C 三人额头上贴
第 22 题(推理):有 4 张红色的牌和 4 张蓝色的牌,主持人先拿任意两张,再分别在 A.B.C 三人额头上贴任意两张牌,A.B.C 三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什 ...
- Hibernate类中集合的映射
1 pojo类集合属性的映射 在pojo类中定义集合属性. 1.1 List集合属性的映射 package org.guangsoft.pojo; import java.util.List; pu ...
- [Android Pro] Gradle Tips#2-语法
referece to : http://blog.csdn.net/lzyzsd/article/details/46935063 在第一篇博客中,我讲解了关于tasks和构建过程中task的不同阶 ...
- web前端打印总结
资料: http://blog.5ibc.net/p/39927.html 正文: 简单的说就是映入两个css文件 <link/> <link/> 每个css文件都有一个属性是 ...
- QRTZ_表注释
QRTZ_CALENDARS 存储Quartz的Calendar信息QRTZ_CRON_TRIGGERS 存储CronTrigger,包括Cron表达式和时区信息QRTZ_FIRED_TRIGGERS ...
- grep(Global Regular Expression Print)
.grep -iwr --color 'hellp' /home/weblogic/demo 或者 grep -iw --color 'hellp' /home/weblogic/demo/* (-i ...
- android 开发赚钱
原 android 开发赚钱 谁带我去看看世界 发布时间: 2015/06/09 12:05 阅读: 1589 收藏: 37 点赞: 2 评论: 5 开发android也有一年左右了,利用业余时间陆续 ...