1、 Controller向View传递数据

  • 使用ViewData传递数据【弱类型,字典型ViewDataDictionary】

  ViewData[“Message_ViewData”] = “ Hello ViewData!”;

  在View中读取Controller中定义的ViewData数据,代码如下:

  @Html.Encode(ViewData["Message_ViewData"])

  •  使用ViewBag传递数据  【动态型,dynamic】

  我们在Controller中定义如下:ViewBag.Message_ViewBag =  “ Hello ViewBag !”;

  •  使用TempData传递数据 【弱类型,临时存储,一次性获取就没了,实际上保存在Session中】

  我们在Controller中定义如下:TempData[“Message”] = “Hello word!”;

  • 使用Model传递数据 【强类型】

  创建强类型的View以后,View的第一行代码如下所示:@model Test.Models.HelloModel

  就代表了这个View使用的Model为“Test.Models.HelloModel”

  然后在View中读取Model中定义的数据,代码如下:@Html.Encode(Model.Name)

2、View向Controller传递数据

  主要通过 发送表单的方式来实现。具体的方式有:

  • 通过Request.Form读取表单数据【post】
@using (Html.BeginForm("HelloModelTest", "Home", FormMethod.Post)) 

{ 

    @Html.TextBox("Name"); 

    @Html.TextBox("Text"); 

    <input type="submit" value="提交" /> 

 }

  控制器中

[HttpPost] 

       public ActionResult HelloModelTest() 

       { 

           string name= Request.Form["Name"]; 

           string text= Request.Form["Text"]; 

           return View(); 

       }

  或者

[HttpPost] 

        public ActionResult HelloModelTest(FormCollection fc) 

        { 

            string name= fc["Name"]; 

            string text  = fc["Text"]; 

            return View(); 

        }
  • 模型绑定
@*为了下面的submit可以post提交到eidt*@
@using (Html.BeginForm("Edit", "TestMovie", FormMethod.Post))
{
//为了防止“过多发布”攻击,请启用要绑定到的特定属性,控制器中加特性[ValidateAntiForgeryToken]
@Html.AntiForgeryToken()
<div>
<input type="submit" value="保存" class="btn btn-default" />
</div>
} 也可以
@using (Html.BeginForm())
{
<input type="submit" value="删除" class="btn btn-default" />
}

  控制器中

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ID,Title,Director,Date")] MovieDB movieDB) 或者 public ActionResult Edit(MovieDB movieDB) //这个默认的模型绑定
{
if (ModelState.IsValid)
{
db.Entry(movieDB).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movieDB);
}

  当你的Action方法是以一个模型对象充当参数时,MVC运行时将会用模型绑定来构建该参数。

默认用于模型绑定的是 DefaultModelBinder,以上述的HelloModel为例,DefaultModelBinder将会检索出所有可用的HelloModel属性用于绑定模型。

根据命名约定,DefaultModelBinder能够自动地在请求中获取相应的值来填充HelloModel对象(它还能创建一个对象的实例来填充)

换句话说:假设HelloModel有一个Name属性,那么模型绑定就会在请求中查找名为Name的参数。注意我说的是在“请求中”,而不是“表单集合”中。

模型绑定会在请求中的各个方面进行值查找,这里面包括路由数据,查询字符串,表单集合。有必要的话你还可以添加自定义的值提供信息。

模型绑定不并局限于Http Post及复杂参数(如HelloModel),你完全可以传入一个原始的简单参数:

public ActionResult HelloModelTest( string name,string text)

// ….

在该场景中,模型绑定将会在请求中查找名。

【MVC】View与Control之间数据传递的更多相关文章

  1. PCB MVC启动顺序与各层之间数据传递对象关系

    准备着手基于MVC模式写一套Web端流程指示查看,先着手开发WebAPI打通数据接口,后续可扩展手机端 这里将MVC基本关系整理如下: 一.MVC启动顺序 二.MVC各层之间数据传递对象关系

  2. Android 在不同Actitity之间数据传递

    本文实现一个简易的人品计算器来实践在不同Actitity之间数据传递 intent的数据传递 从A界面打开B界面 把A界面的数据传递给B界面 1. intent.setData(uri) -- int ...

  3. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  4. 解析activity之间数据传递方法的详解

    转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下     1  基于消息的通信机制 ...

  5. ios应用view之间数据传递的方式

    对于不同的viewcontroller之间数据的共享和处理 采用代理的方式,子viewcontroller设计代理协议,并定义协议接口,父viewcontroller实现协议接口,实现子视图控制器退出 ...

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

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

  7. ASP.NET MVC View向Controller提交数据

    我们知道使用MVC的一个很重的的用途就是把Controller和View之间进行解耦,通过控制器来调用不同的视图,这就注定了Controller和View之间的传值是一个很重的知识点,这篇博文主要解释 ...

  8. APS.NET MVC + EF (04)---路由和数据传递

    4.1 视图引擎 ASP.NET MVC 提供两种视图引擎:ASPX(C#)和Razor(CSHTML),推荐使用Razor. 4.1.1 Razor的语法 在Razor视图中,所有的服务器端代码都是 ...

  9. 【部分】Asp.Net Mvc 控制器与视图的数据传递

    原文:https://www.cnblogs.com/lsgsanxiao/p/5105639.html 数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业 ...

随机推荐

  1. C#将集合和Json格式互相转换的几种方式

    1.使用微软自带的System.Web.Extensions.dll转换,该DLL文件一般存在于如下路径:c:\Program Files\Reference Assemblies\Microsoft ...

  2. English trip -- VC(情景课)2 B Classroom objects

    Vocabulary focus 核心词汇 Listen and repeat. 听并跟读 1. a dictionary 2. paper 3. a pen 4. a ruler 5. a stap ...

  3. python-day42--单表查询

    1. 简单查询select * from employee;select name,salary from employee; 2. where条件           1.比较运算符:> &l ...

  4. UVA-11214 Guarding the Chessboard (迭代加深搜索)

    题目大意:在一个国际象棋盘上放置皇后,使得目标全部被占领,求最少的皇后个数. 题目分析:迭代加深搜索,否则超时. 小技巧:用vis[0][r].vis[1][c].vis[2][r+c].vis[c- ...

  5. 87. Scramble String *HARD* 动态规划

    Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...

  6. spring boot 学习(十二)拦截器实现IP黑名单

    拦截器实现IP黑名单 前言 最近一直在搞 Hexo+GithubPage 搭建个人博客,所以没怎么进行 SpringBoot 的学习.所以今天就将上次的”?秒防刷新”进行了一番修改.上次是采用注解加拦 ...

  7. @Resource与@Autowired注解的区别

    一.写本博文的原因 年初刚加入到现在的项目时,在使用注解时我用的@Resource.后来,同事:你怎么使用@Resource注解?我:使用它有错吗?同事:没错,但是现在都使用@Autowired.我: ...

  8. forget word _a

    forget word a~   一再,铺音前     1● ab 2● ac 3● ad 4● af 5● ag 6● an 7● as 8● at 9● ap 10● ar

  9. jsp 自定义标签库

    自定义标签的作用 *** 自定义标签的主要用于移除jsp页面中java代码 *** JSP页面中使用自定义的标签 使用jsp指令<% @taglib uri="标签库的uri" ...

  10. Awk 从入门到放弃(5)– Awk模式(Pattern)之一

    转:http://www.zsythink.net/archives/1426