MVC总结--数据传递

  • View—>Controller

1.传统方式,Get方式提交,在Controller中获得客户端请求:

string Name = Request["name"];

string Id=Request .QueryString ["id"];

2.超链接方式

在超链接中传参,改进了原来的<a></a>

<%:Html .ActionLink ("链接","Index","Home",new{id="1",name="Jim"}) %>

上面的new{},就是在传递一个参数集合,以这种方式传过来的参数Controller如何接收呢?

假如是链接到Index页面,那么在Controller中的Index方法的参数中,这样写,这里的参数名称一定要和上述的参数名称一致。

public ActionResult Index(int
id,string name)

{

return View();

}

也可以通过实体来获得

public ActionResult Index(UserInfo user)

{

return View();

}

只是,实体中的属性也必须对应着:

public class UserInfo

{

public string id { get; set; }

public string
name { get; set; }

}

3.Post:获得客户端提交的数据:Request.Form

4.在客户端建立表单,在Controller中获得表单集合FormCollection

public ActionResult Index(FormCollection form1)

  • Controller—>View

1.传统方式,直接输出:

Response.Write(form1.Count );

return Content("ok");

  • Controller<—>View

1.通过ViewData

ViewData是字典容器,它是key/Value键值集合

在Controller中:

ViewData["key"]

在View中:

<%=ViewData["key"]%>

<%:ViewData["key"]%>

或者让某个控件显示ViewData中的数据

<%=Html .TextBox ("txtName") %>

只要key值相同,Controller和View中的ViewData中的数据就可以互相传递。

2.强类型页面,设置视图模型

弱类型页面传递的数据,没有限制,而强类型页面规定了该页面传递的数据类型--指定的某个模型(Model),可以使传递的数据准确,安全。为了让它们之间数据传递通畅无阻,需要我们在Controller中设定ViewData.Model类型。

在页面上我们也要设定:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcDemo1.Models.TDepartment>" %>

然后在页面中就可以获得模型中具体字段,<%: Html.DisplayNameFor(model => model.txtName) %>

这里"model"就是一个变量名,可以任意命名,因为在整个页面已经规定了类型了,所以也可以写成。

<%: Html.DisplayNameFor(m => m.txtName) %>

  • 总结

MVC中的数据传递看起来方便,安全,当然也有很多约束,如一些参数名称的对应,除了以上方式,还有ViewBag等传递数据的方式,需要我们在实际应用中来比较它们各自的优劣。

时间: 2024-10-17 02:13:41

MVC总结--数据传递的相关文章

ASP.NET MVC 基础--------数据传递

前言 大家好,我是大成子.之前有朋友去面试,面试官问了一个这样的题:在http://ASP.NET MVC 中视图和控制器之间有哪几种数据传递方式?今天大成子就带大家一起来探讨C(控制器)向V(视图)[前端视图向控制器发送请求传输的数据的方式本次这里不做赘述了,有机会再做分析和分享]传输数据有哪几种方式.(ViewData/ViewBag/TempData/model) ViewData 第一个是ViewData,它用来存储存储String Key/Object的值.它是一个继承自ViewDat

MVC中数据传递 ViewBag的使用

ViewBag MVC3中 ViewBag.ViewData和TempData的使用和区别 在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary). ViewBag和ViewData的区别: ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析.所以在视图中获取它的数据

MVC 子对象数据传递

1.接受参数 1 public ActionResult Address(User user) 2 { 3 return View(); 4 } 2. User对象类型 1 public class User 2 { 3 public string Name { get; set; } 4 5 /// <summary> 6 /// 子对象(单个) 7 /// </summary> 8 public Address Address { get; set; } 9 10 /// &l

ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

转自:http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送表单实现的.具体使用中,主要使用以下三种方法. 1.通过Request.Form读取表单数据        2.通过FormCollection读取表单数据        3.直接读取表单数据对象 下边是我学习这些东西时的一点总结 1.通过Request.Form读取表单数据      首先定

mvc中的几个数据传递

1.ViewData对象 ViewBagData是一种字典集合数据同时属于视图基类和控制器基类的属性. 实例: //控制器 public class HomeController:Controller { public ActionResult Index() { ViewData["data"]="Hello asp.net"; return View(); } } 视图: <h1><%=ViewData["data"]%&g

七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

注:本文为学习摘录,原文地址为:http://www.cnblogs.com/powertoolsteam/p/MVC_two.html Controller与 View之间的值传递 在上一节的实验二中已经创建了静态View.然而在实际使用情况下,View常用于显示动态数据.在实验三中们将在View中动态显示数据. View将从从Controller获得Model中的数据. Model是MVC中 表示业务数据的层. 实验3 ——使用View数据 ViewData相当于数据字典,包含Control

ASP.NET MVC中Controller与View之间的数据传递总结

在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: Ø Controller向View传递数据 Ø View向Controller传递数据 一.Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData[“Message”] = “Hello word!”; 然后在View中读取Controller中

ASP.NET MVC 之控制器与视图之间的数据传递

今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, 如何在控制器中获取,处理这些数据. ASP.NET MVC 中所有控制器都继承Controller类,而Controller又继承自ControllerBase,而ControllerBase下又包含ViewData以及TempData视图数据字典. 一,使用ViewData传递数据 ViewDat

ASP.NET MVC (二)——ASP.NET MVC 数据传递

一.Controller与 View之间的值传递 1.View将从从Controller获得Model中的数据. Model是MVC中 表示业务数据的层. 2.ViewData相当于数据字典,包含Controlle和View之间传递的所有数据.Controller会在该字典中添加新数据项,View从字典中读取数据. 二.使用View数据 1. 创建Model 类,在Model文件夹下新建Employee类 2. 在Controller 中获取Model,在GetView 方法中创建Employe