ASP.NET MVC中Controller与View之间的数据传递
2012-08-31 18:16
513 查看
前段时间,在项目中,运用到ASP.NET MVC 2.0技术,经常会遇到要在Controller与View之间数据传递的问题,现在在总结一下。
一、Controller向View传递数据
Controller向View传递数据有3种形式:
1、通过ViewData传递
在Controller里面定义ViewData,并且赋值,比如 ViewData["contact"] = contact;
然后在View里面读取Controller中定义的ViewData数据
比如联系人: <input type="text" value='<%=ViewData["contact"] %>' name="contact"/>
2、通过TempData传递
与ViewData的使用和传递方式相类似,现在在Controller里面定义TempData,并且赋值,比如 TempData["message"] = “你好!”;
然后在View里面读取Controller中定义的TempData数据
比如联系人: <input type="text" value='<%=TempData["message"] %>' name="message"/>
3、通过强类型的ViewModel传递
我们先创建一个ListViewData,它是泛型类型的,代码如下:
[/code]
使用ViewModel传递数据的时候,通常在创建View的时候我们会选择创建强类型View,如下图所示:
在View的开始部分我们可以看到ViewModel,ViewPage尖括号里面的就是ViewModel
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ViewPage.Master" Inherits="System.Web.Mvc.ViewPage<QQYDT.Help.PageHelp.ListViewData<QQYDT.DTO.CompanyDTO>>" %>
在View引用 <input name="listId" type="checkbox" class="STYLE2" value="<%=m.CompanyId%>" />,这种方式的好处是vs能够提供智能感知。
二、View向Controller传递数据
在ASP.NET MVC中,将View中的数据传递到Controller中,主要通过发送表单的方式来实现。具体的方式有:
1、通过Request.Form方式传递
lto.LetterText = Request.Form["content"];
这种方式也可以简写,直接在后台的参数列表传入控件的名字,比如public ActionResult Write(string content)。
这样在Write方法里面获得content控件的值。
2、通过FormCollection读取表单数据
public ActionResult ActionName(FormCollection formCollection)
string username = formCollection["UserName"];
3、自定义数据绑定
自定义数据绑定的方法如下:创建一个自定义数据绑定类,让这个类继承自IModelBinder,实现该接口中的BindModel方法。
一、Controller向View传递数据
Controller向View传递数据有3种形式:
1、通过ViewData传递
在Controller里面定义ViewData,并且赋值,比如 ViewData["contact"] = contact;
然后在View里面读取Controller中定义的ViewData数据
比如联系人: <input type="text" value='<%=ViewData["contact"] %>' name="contact"/>
2、通过TempData传递
与ViewData的使用和传递方式相类似,现在在Controller里面定义TempData,并且赋值,比如 TempData["message"] = “你好!”;
然后在View里面读取Controller中定义的TempData数据
比如联系人: <input type="text" value='<%=TempData["message"] %>' name="message"/>
3、通过强类型的ViewModel传递
我们先创建一个ListViewData,它是泛型类型的,代码如下:
[code] using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QQYDT.Help.PageHelp
{
public class ListViewData<T>
{
public ListViewData()
{
PageData = new List<T>();
}
public int PageSize
{
get;
set;
}
private int _currentPage;
public int CurrentPage
{
get
{
return _currentPage;
}
set
{
_currentPage = value;
}
}
public List<T> PageData
{
get;
set;
}
public int PageDataCount
{
get;
set;
}
public int PageCount
{
get
{
int count = PageCalculator.TotalPage(PageDataCount, PageSize);
return count;
}
}
public int ShowType
{
get;
set;
}
}
}
[/code]
使用ViewModel传递数据的时候,通常在创建View的时候我们会选择创建强类型View,如下图所示:
在View的开始部分我们可以看到ViewModel,ViewPage尖括号里面的就是ViewModel
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ViewPage.Master" Inherits="System.Web.Mvc.ViewPage<QQYDT.Help.PageHelp.ListViewData<QQYDT.DTO.CompanyDTO>>" %>
在View引用 <input name="listId" type="checkbox" class="STYLE2" value="<%=m.CompanyId%>" />,这种方式的好处是vs能够提供智能感知。
二、View向Controller传递数据
在ASP.NET MVC中,将View中的数据传递到Controller中,主要通过发送表单的方式来实现。具体的方式有:
1、通过Request.Form方式传递
lto.LetterText = Request.Form["content"];
这种方式也可以简写,直接在后台的参数列表传入控件的名字,比如public ActionResult Write(string content)。
这样在Write方法里面获得content控件的值。
2、通过FormCollection读取表单数据
public ActionResult ActionName(FormCollection formCollection)
string username = formCollection["UserName"];
3、自定义数据绑定
自定义数据绑定的方法如下:创建一个自定义数据绑定类,让这个类继承自IModelBinder,实现该接口中的BindModel方法。
相关文章推荐
- 【转载】ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结
- Asp.net MVC中 Controller 与 View之间的数据传递
- ASP.NET MVC中Controller与View之间的数据传递总结
- 【Asp.Net MVC】Controller和View之间传递数据
- ASP.NET MVC中Controller与View之间的数据传递总结
- 【转载】ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结
- ASP.NET MVC中Controller与View之间的数据传递总结 (来自网络)
- ASP.NET MVC中Controller与View之间的数据传递总结
- (转)ASP.NET MVC中Controller与View之间的数据传递总结
- Asp.net MVC 学习笔记 (3) --Controller 与View 之间的数据传递
- ASP.NET MVC_Controller和View之间数据传递(前后台数据传递)方式
- 【ASP.NET MVC】View与Controller之间传递数据
- 浅析ASP.NET MVC中Controller与View数据传递
- ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- 浅析ASP.NET MVC中Controller与View数据传递
- Asp.Net MVC中Controller与View之间传递的Model
- asp.net MVC前台View页面向后台Controller控制器传递数据的几种方式