在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前段时间,在项目中,运用到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,它是泛型类型的,代码如下: using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
5:
namespace QQYDT.Help.PageHelp
7: {
class ListViewData<T>
9: {
public ListViewData()
11: {
new List<T>();
13: }
14:
int PageSize
16: {
17: get;
18: set;
19: }
20:
int _currentPage;
int CurrentPage
23: {
24: get
25: {
return _currentPage;
27: }
28: set
29: {
value;
31: }
32: }
33:
public List<T> PageData
35: {
36: get;
37: set;
38: }
int PageDataCount
40: {
41: get;
42: set;
43: }
44:
int PageCount
46: {
47: get
48: {
int count = PageCalculator.TotalPage(PageDataCount, PageSize);
50:
return count;
52: }
53:
54: }
55:
int ShowType
57: {
58: get;
59: set;
60: }
61: }
62: }
使用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方法。 |
请发表评论