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. Perl的基本语法<总结> (转载)

    前言:这篇文章是花了我很多时间.费了我很多心血才完成的,虽然连我自己都觉得无法达到尽善尽美的境界,但希望能帮助大家入门,稍微了解到Perl 到底是个什么样的东西,Perl到底有那些强大的功能,那么这篇 ...

  2. Hadoop集群管理之配置文件

    一.配置文件列表如下: [hadoop@node1 conf]$ pwd /app/hadoop/conf [hadoop@node1 conf]$ echo $HADOOP_HOME /app/ha ...

  3. 高级工具gprof、gprof2dot.py、dot

    可以研究程序性能.函数调用堆栈等,而且能用图标查看. linux环境下 C++性能测试工具 gprof + kprof + gprof2dot - 阁子 - 博客园 gprof.gprof2dot.p ...

  4. Linux中PHP如何安装curl扩展方法

    如果php已经在系统编译好,后来又需要添加新的扩展. 一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展. 下面以安装curl扩展为例: 1.下载curl安装 ...

  5. 关于iframe嵌套、动态获取iframe内的url、父页面重定向

    1 $(function () { 2 //选择器是选择了easyui中的点击链接,出现新的iframe 3 $("a[target='mainFrame']").click(fu ...

  6. Semi-prime H-numbers(筛法)

    Semi-prime H-numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8069 Accepted: 3479 ...

  7. ASP.NET使用后台更改前台Style

    首先是后台给前台设置Style属性,设置控件坐标 前台控件: <asp:Label ID = "lblDSRText" Text = "当事人" runa ...

  8. Unity中实现List类型的自定义GUI(ReorderableList)

    感谢韩同学提供的资源 Unity本身提供了float,int,vector3..等类型字段的gui接口,而对于集合类型一般要自己硬写. 官方提供了一个List的自定义GUI,但使用起来非常复杂 Uni ...

  9. IOCTL函数用法

    http://blog.163.com/he_junwei/blog/static/19793764620152510533753/ http://blog.csdn.net/styyzxjq2009 ...

  10. windows下mysql自动定时备份bat

    @echo off : basedataset ip=192.168.12.41set user=rootset password=12456 set databaseName=test set /a ...