0

0

ASP.NET Core MVC怎么传递数据到视图 ASP.NET Core ViewData/ViewBag用法

星降

星降

发布时间:2026-01-05 10:27:09

|

410人浏览过

|

来源于php中文网

原创

ViewData 和 ViewBag 是 ASP.NET Core MVC 中控制器向视图临时传值的轻量方式,本质相同、仅限单次请求,适合传少量非结构化数据,但缺乏类型安全和编译检查,推荐优先使用强类型 ViewModel。

asp.net core mvc怎么传递数据到视图 asp.net core viewdata/viewbag用法

ASP.NET Core MVC 中向视图传递数据,最常用、最轻量的方式就是 ViewDataViewBag。它们本质相同,都是控制器向视图“临时传值”的快捷通道,适用于单次请求内的简单数据共享。

ViewData 是字典,需要类型转换

ViewData 是一个继承自 IDictionary 的动态字典,键是字符串,值是 object 类型。在控制器中赋值后,视图里必须显式转换类型才能安全使用。

  • 控制器中写法:ViewData["Title"] = "用户列表"; ViewData["Count"] = 12;
  • 视图中用法:@ViewData["Title"](显示为 string);@((int)ViewData["Count"])(必须强转,否则编译不报错但运行可能出错)
  • 注意:如果 key 不存在或类型不匹配,运行时会抛 NullReferenceExceptionInvalidCastException

ViewBag 是动态包装器,写起来更省事

ViewBag 是对 ViewData 的动态封装(底层仍是 ViewData),利用 C# 的 dynamic 特性,允许用点语法访问属性,无需引号和类型转换。

  • 控制器中写法:ViewBag.Title = "用户列表"; ViewBag.Count = 12;
  • 视图中用法:@ViewBag.Title@ViewBag.Count(自动解包,看起来像普通属性)
  • 缺点:没有编译时检查——拼错属性名(如 @ViewBag.Titile)不会报错,运行时才为 null;也不支持 IntelliSense 提示

它们的共同特点和适用场景

ViewData 和 ViewBag 都只在当前请求生命周期内有效,下一次请求就清空。适合传少量、非结构化、一次性的数据,比如页面标题、提示消息、开关标志等。

Image Creator
Image Creator

ImageCreator是Photoshop的免费AI插件,赋予艺术家强大的功能,如TXT2IMG、IMG2IMG、Fill和ControlNet。

下载
  • 不能传复杂模型对象(建议用 ViewData.Model 或直接 return View(model))
  • 不适合跨 Action 传值(要用 TempData)
  • 不推荐在大型项目中大量使用——可维护性差,容易出错,测试困难
  • 常见用法举例:ViewBag.IsAdmin = User.IsInRole("Admin");,然后视图里 @if (ViewBag.IsAdmin) { ... }

一个小提醒:别混用,优先考虑强类型模型

ViewData 和 ViewBag 底层共用同一份数据容器,所以 ViewBag.Name = "张三" 等价于 ViewData["Name"] = "张三"。混着用容易混乱,选一种风格保持统一即可。

真正要传业务数据,比如用户列表、表单数据,应优先使用强类型视图模型(ViewModel):定义类 → 控制器 new 并传入 → 视图顶部声明 @model UserListViewModel。这样有类型安全、智能提示、易于单元测试,才是 MVC 的推荐做法。

基本上就这些。ViewData/ViewBag 是快刀,用对地方很顺手;但别当主菜,该上 ViewModel 还得上。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

314

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

230

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

435

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

716

2023.08.22

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

195

2023.11.20

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

253

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

206

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1437

2023.10.24

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

1

2026.01.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6万人学习

C 教程
C 教程

共75课时 | 3.9万人学习

C++教程
C++教程

共115课时 | 11.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号