Asp.net core mvc框架(.Net5) 页面传值的几种方式

TempData、ViewData、ViewBag三种方式,这三种什么差别呢?

TempData:默认存储于Session中,可通过继承ITempDataProvider接口改变。
生命周期:经过一次Controller传递就失效,即View读取一次后相应的TempData即从TempData集合中删除,只是假设TempData未被View读取之前,其值可在Controller之间传递。(假设你不想TempData使用后就删除,您能够通过TempData.Peek(“KEY”)来长期保存。假设是仅仅想再保存一次,再读取一次后再删除则要使用TempData.Keep(“KEY”),这样假设再被读取又会再次标记删除。)

ViewData:默认存储为Dictionary键值对
生命周期:仅对当前View有效。

ViewBag:不再是以键值对形式存放。它以dynamic类型存放
生命周期:同ViewData一样,仅对当前View有效(ViewBag可看成是对ViewData的封装,只是ViewBag不能够作为扩展方法的參数,因为扩展方法的參数类型必须是明确的)

除了以上三种方式以外,还有ViewModel、PartialView和Tuple

ViewModel:它是基于视图需求的Model,它能够把多个View Model以属性的方式合并到一个View Model中。

长处:
● 把多个model放到一个View Model中
● 有智能提示
● 安全性:Domain Model被隐藏
● 当Domain Model有变化,不须要改动视图非常多。仅仅须要改动相应的View Model就能够
● 在Domain Model和View之间实现了松耦合

PartialView:对于哪些须要反复使用的视图部分,提取出来作为部分视图。

长处:
● 方便反复使用
● 仅仅更新主视图的某个部分
缺点:
● 多过的使用影响可读性

Tuple:.NET 4.0推出的。是一个有序的、不可变的、固定大小的、同意存放多种类型的类。

适合传递一些”小数据”。假设不想在ASP.NET MVC中创建View Model,可用Tuple来替代。

长处:
● 提供了一种不须要创建View Model而传递Model的方式。
缺点:
● 大小被限制:最多仅仅能存放8组数据。

前5种方式的页面获取值

对于方式四,需要在Startup类中注入Session,在ConfigureServices方法中添加 services.AddSession(),在Configure方法中添加 app.UseSession(),不然会报以下错误(System.InvalidOperationException:“Session has not been configured for this application or request.”)

添加完后的截图如下所示:

 同时在Index.cshtml中引入:@using Microsoft.AspNetCore.Http

对于方式五需要在Index.cshtml中引入:@model System.String

结果如下所示:

 对于方式六,需要在地址中调用

 

就会进入Index1方法中,此时 value=999

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值