Asp.Net Mvc 控制器与视图的数据传递

摘要:本文将讨论asp.net mvc框架中的数据传递。

    数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业务层获得一些数据,怎么传递到视图中,让视图显示在客户端呢?带着这些疑问,我们接着看。。

     下面分别讲解asp.net mvc框架中有三种数据传递方式,分别是:ViewData,TempData,Model

      ViewData:只能在一个动作方法中设置,在相关视图页面读取,说得再白一点就是只能在一个页面中使用。

     例 在Action方法中设置: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时,会弹出以下这个窗口 Asp.Net Mvc 控制器与视图的数据传递 - Ss_Andy - 什么都要试一下,这才是人生 在用红色的线圈出来的下拉菜单中输入对象的类型即可,在页面使用的时候就直接[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.netMVC中,视图层和控制器层的传值的更多相关文章

  1. MVC中视图View向控制器传值的方法

    MVC中视图View向控制器传值的方法步骤如下: 1.index页面: 页面中只需要一个触发事件的按钮

  2. asp.netMVC中使用aop进行关注点分离

    资源地址:https://stackoverflow.com/questions/23244400/aspect-oriented-programming-in-asp-net-mvc 从页面复制过来 ...

  3. Asp.netMVC中Html.Partial,RenderPartial,Action,RenderAction区别和用法

    https://www.2cto.com/kf/201702/602449.html Partial 和RenderPartial: 这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传 ...

  4. asp.netMVC中实现分页方法

    方法一:使用传统的sql语句实现分页,    public class UserprintDao如下 /// <summary> /// 取得用户申请记录列表(按分页) /// </ ...

  5. asp.netMVC中配置automap

    第一.新建类库,以解决方案名XXX为例,建立子类库名为  XXX.AutoMapper. 第二. XXX.AutoMapper类库中,添加对automap的引用. 第三.创建映射文件类 ModelPr ...

  6. Asp.netMVC中地址后缀使用.html,jsp等404错误解决

    asp.net mvc 默认的地址路径url都是没有后缀的比如 www.a.com/aa/bb 等 如果要是www.a.com/aa/bb.html需要专门写路由. 根据我之前的经验,mvc的路由是相 ...

  7. asp.netMVC中权限控制论

    这里设想了一个简单的思路,如果用户登录了,也就是session中有值才可以在控制器中操作,这样先添加一个控制器,如下代码: public class AuthController : Controll ...

  8. ASP.NET-MVC中Entity和Model之间的关系

    Entity 与 Model之间的关系图 ViewModel类是MVC中与浏览器交互的,Entity是后台与数据库交互的,这两者可以在MVC中的model类中转换 MVC基础框架 来自为知笔记(Wiz ...

  9. Asp.netMVC中Ajax.BeginForm上传文件

    做一个上传并解压的功能,解压完了回调,解压多少文件.搞了半天用Ajax.BeginForm.各种坑,后来直接放弃 @using (Ajax.BeginForm("UploadFile&quo ...

随机推荐

  1. Java String类中的intern()方法

    今天在看一本书的时候注意到一个String的intern()方法,平常没用过,只是见过这个方法,也没去仔细看过这个方法.所以今天看了一下.个人觉得给String类中加入这个方法可能是为了提升一点点性能 ...

  2. 收缩 虚拟硬盘 shrink vhd

    在使用WIN2012 的Hyper-v的虚拟磁盘时, 有时需要将磁盘中未使用的控件收缩掉, 这时就需要使用Hyper-v磁盘工具的收缩功能. 如果使用Hyper-v磁盘工具, 不能对vhd虚拟磁盘进行 ...

  3. centos7.1-64bit延时截屏

    centos自带了截屏的软件,而且还能延时截屏. 在桌面左上角的应用程序菜单里: “应用程序”->“工具”->“截图” 设定延时秒数,点击“截图”按钮,开始截图. 完.

  4. HDU 4035:Maze(概率DP)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=4035 Maze Special Judge Problem Description   When w ...

  5. 多拉A梦——日语歌词

    こんなこといいな できたらいいな 这件事真好啊 能够做到的话就好啦 あんな梦(ゆめ) こんな梦(ゆめ) いっぱいあるけど 那样的梦想 这样的梦想 我还有好多哪 みんなみんなみんな かなえてくれる 大家 ...

  6. 实现Ecshop商品跳到淘宝、京东等的购买链接

    今天简单的实现了一下ecshop商品导出到第三方的购买链接功能.大致思路是给商品添加一个buy_link的text字段,存为json结构,然后通过json解析输出到商品购买页面 1.添加字段 增加购买 ...

  7. 每日一九度之 题目1076:N的阶乘

    时间限制:3 秒 内存限制:128 兆 特殊判题:否 提交:7601 解决:2749 题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: 输入可 ...

  8. C#之参数线程

    public Form1() { InitializeComponent(); } Thread t; private void button1_Click(object sender, EventA ...

  9. 怎么查看jar包版本

    jar包根目录里的META-INF目录下的MANIFEST.MF文件里一般有会记录版本信息,可以到这个文件里查看 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录 ...

  10. Self Numbers 分类: POJ 2015-06-12 20:07 14人阅读 评论(0) 收藏

    Self Numbers Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22101   Accepted: 12429 De ...