MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:

MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下:

一、Controller----------->View

1、ViewData

获取或设置一个字典,其中包含在控制器和视图之间传递的数据。使用ViewData是采用键值对的形式,对所定义的数据进行传递。在View中会自动识别到拥有唯一键值的ViewData,并将数据显示出来。

例子:

1
2
3
4
5
6
7
8
9
10
public ActionResult()
{
             List<Models.BlogArticle> list = (from d in db.BlogArticles where d.AIsDel == false select d).ToList();
             //2将集合数据传给视图
             // ViewBag.DataList = list;//viewBag形式
             //利用viewdata形式
             ViewData[ "DataList" ] = list;
 
             return View();
}

视图中接收:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
< table id = "tbList" >
         < tr >
             < th >id</ th >
             < th >标题</ th >
             < th >分类</ th >
             < th >状态</ th >
             < th >时间</ th >
             < th >操作</ th >
         </ tr >
 
 
         <!--遍历Action方法,设置给ViewData的集合数据,生成html代码-->
         @foreach (BlogArticle a in ViewData["DataList"] as List< BlogArticle >)
         {
             < tr >
                 < td >@a.AId </ td >
                 < td >@a.ATitle </ td >
                 < td >@a.ACate</ td >
                 < td >@a.AStatu </ td >
                 < td >@a.AUpdatetime </ td >
                 < td >@a.AContent </ td >
                 < td >
                     < a href = "javascript:del(@a.AId)" >删</ a >
                     < a href = "/home/modify/@a.AId" >改</ a >
                 </ td >
              </ tr >
 
         }
     </ table >

2、ViewBag

获取视图包,允许自定义属性进行赋值,属于动态类型(dynamic),以ViewBag.属性=属性值得方式进行传值,其实这里跟ViewData的使用原理类似。

例子:

1
2
3
4
public ActionResult Index()
{
          ViewBag.Title= "Hello!" ;
}

视图中接收

<h1>ViewBag.Title</h1>

3、其他方式

在从controller向view传值时,除了以上两种方式外,还包括一些链接的方式,例如页面跳转的方式RedirectToAction,还有RenderAction等自动接收等方式。

二、从View-------->Controller

1、其实在这种情况下,通常会选择利用ajax来通过get或者post进行提交。如果采用最原始的JS来做,就要用到之前总结的ajax经典的五步工作法了,但是通常我们采用JQuery封装好的ajax提交方式。

即$.ajax({type,url,data,success:function(){})其中最常用的就是这几个参数属性了。

2、通过Get方式+路由配置+id值进行提交数据

1
2
< td >
                     < a href = "javascript:del(@a.AId)" >删</ a ></ td >

JS:

1
2
3
4
5
6
7
<script type= "text/javascript" >
        function del(id) {
            if (confirm( "您确定要删除吗?亲~~" )) {
                window.location = "/home/del/" + id; //通过get方式采用路由配置+id的形式
            }
        }
     </script>

三、Action---------->Action

前面两种传值方式都是在view和Controller之间进行数据传递,那么如果某一个业务需要用到后台的两个Action,并且需要再这两个Action之间进行数据传递,这时需要用到另一个概念TempData:获取要传递到视图的临时数据.使用时,需要注意TempData的生命周期,只在第一次请求Action时临时数据存在,之后自动变为NULL,具体的使用与ViewData相同,属于键值对的数据字典类。

1
2
3
4
5
6
7
8
9
10
public ActionResult Index()
     {
         this .TempData[ "str" ]= "wyy" ;
         return View();
     }
     public ActionResult Index2()
     {
         string name= this .TempData[ "str" ];
         return Content(name);
     }

以上是在学习和实践MVC过程中经常用到的页面传值的几种方式,大的方向看来从C向V数据传递以ViewData为基础,扩展到ViewBag,更加方便快速了。从V到C传递,则归于ajax中的get和post的提交了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值