MVC_3种数据传递方式

MVC中控制器和视图之间的三种数据传递方式总结:

1、ViewData

     只能在一个动作方法中设置,在相关的视图中获取,只对当前视图有效。

     使用方法:

     model中:ViewData["test"] = "test";

     XX.apsx中:<%=Html.Encode(ViewData["test"]) %> 或者 <%: ViewData["Message"] %>

2、TempData

     可以在多个方法或者多个页面中设置、读取。TempData只能在控制器中传递一次,每个元素只能被访问一次,访问后被删除。

     TempData实质上是保存在session中,每次读取都是从session中获取并删除。

     使用方法:

     model中:TempData["TMessage"] = "测试TempData";

     XXaspx中:<%: TempData["TMessage"] %>

3、model传递

     model传递数据可以解决强类型数据传递。通过view()方法传递实例化对象到视图中。

     model:var model = new uerList {new user{name ="name1",age="12"},new user{name="name2",age="23"}};

                return View(model);

    XXaspx:<% foreach item in model {%>

                处理

                <%}%>

SP:

   传递多个数据对象的方法:

   创建一个类,将多数据组合进新类中,在model中传递新类的实例即可。

   model: NewClass nc = new NewClass();

                nc.names= userlist;

                nc.salys = salysList;

                return View(nc);

   XXaspx:<% foreach item in model.names {%>

               处理

     <%}%>

-----------------------------------------------------------------------------------------------

MVC中,将视图中的数据传递到控制器主要是通过发送表单实现的。

视图数据实例:

    

?
<% using  (Html.BeginForm( "RequestForm" , "Home" ))
      { %>
   name:
   <%: Html.TextBox( "Name" )%>
   age:
   <%: Html.TextBox( "Age" )%>
   <input type= "submit"  name= "submit"  value= "RequestForm"  />
   <% } %>

1、Request.Form



    model中用法:

?
[AcceptVerbs(HttpVerbs.Post)]
        public  ActionResult RequestForm()
        {
            user u = new  user();
            u.Name = Request.Form[ "Name" ];
            u.Age = Request.Form[ "Age" ];
            return  RedirectToAction( "Index" );
        }

2、FormCollection

     model中用法:

    

?
[AcceptVerbs(HttpVerbs.Post)]
      public  ActionResult RequestForm(FormCollection fc)
      {
          user u = new  user();
          u.Name = fc[ "Name" ];
          u.Age = fc[ "Age" ];
          return  RedirectToAction( "Index" );
      }

3、直接读取表单数据对象

    model中用法:

   

?
[AcceptVerbs(HttpVerbs.Post)]
       public  ActionResult RequestForm(user u)
       {
           return  View(u);
       }
 
4、可以通过继承IModelBinder实现自定义数据绑定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值