ASP.NET MVC从控制器传递数据到视图的四种方式详解
发布时间 - 2026-01-10 22:29:22 点击率:次前奏

1. 在新建项目中的Models文件下,新建Products类:
public class Products
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
2. 在控制器中实例化此类
var p = new Products()
{
Id = 1,
Name = "饮料",
Price = 2.5
};
方式1:ViewData
将控制器中的方法用ViewData以键值对的形式类存储上述的实例化对象,如下:
ViewData["person"] = p;
然后在视图中获取ViewData中的值,并转换对象,如下:
@{
var p = (Products)ViewData["person"];
}
<h1>@p.Id</h1>
<h2>@p.Name</h2>
<h3>@p.Price</h3>
方式2:ViewBag
将控制器中的方法利用ViewBag动态表达式的形式存储上述对象,如下:
ViewBag._Product = p;
修改视图,如下:
@{
var p = (Products)ViewBag._Product;
}
方式3:Model
将控制器中的方法返回View上述对象,如下:
public ActionResult Index()
{
var p = new Products()
{
Id = 1,
Name = "饮料",
Price = 2.5
};
return View(p);
}
而我们在视图中得到强制类型对象Products,如下:
@using MvcTest.Models;
@model Products
@{
ViewBag.Title = "Index";
}
<h1>@Model.Id</h1>
<h2>@Model.Name</h2>
<h3>@Model.Price</h3>
方式四:TempData
TempData可以通过转向继续使用,因为它的值保存在Session中。但TempData只能经过一次传递,之后会被系统自动清除。
下面我将演示从Index动作转向Order动作,并在视图中输出TempData中存储的值。
首先在控制中新建Action方法,命名为Order方法,代码如下:
public ActionResult Index()
{
var p = new Products()
{
Id = 1,
Name = "饮料",
Price = 2.5
};
TempData["_product"] = p;
return RedirectToAction("Order");
}
public ActionResult Order()
{
return View();
}
修改视图如下:
@{
Products p = (Products)TempData["_product"];
}
假设控制器中的代码修改如下:
public ActionResult Index()
{
var p = new Products()
{
Id = 1,
Name = "饮料",
Price = 2.5
};
TempData["_product"] = p;
return RedirectToAction("Order");
}
public ActionResult Order()
{
return RedirectToAction("Detail");
}
public ActionResult Detail()
{
Products _product = (Products)TempData["_product"];
return View("");
}
转向:Index — Order — Detail,那么在Detail方法中,是不能获取到TempData对象的,因为TempData只能经过一次传递,之后会被系统自动清除。
输出结果
源码下载:http://xiazai./201701/yuanma/MvcTest_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# mvc控制器跳转视图
# mvc
# 视图与控制器传值
# 控制器传值到视图
# ASP.NET Core MVC中的视图(Views)
# ASP.NET Core MVC学习之视图组件(View Component)
# ASP.NET Core MVC基础学习之局部视图(Partial Views)
# ASP.NET MVC中分部视图的应用方法
# 详解使用asp.net mvc部分视图渲染html
# ASP.NET MVC从视图传参到控制器的几种形式
# asp.net core mvc权限控制:在视图中控制操作权限
# asp.net MVC 根据菜单树类别不同动态加载视图的实现步骤
# 器中
# 后会
# 并在
# 可以通过
# 此类
# 我将
# 命名为
# 大家多多
# 键值
# 源码下载
# 新建项目
# Price
# js
# person
# lt
# ViewData
# var
# strong
# class
# brush
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理CORS跨域请求?(配置示例)
如何快速登录WAP自助建站平台?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
中山网站制作网页,中山新生登记系统登记流程?
网易LOFTER官网链接 老福特网页版登录地址
如何在阿里云通过域名搭建网站?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
网站图片在线制作软件,怎么在图片上做链接?
大连 网站制作,大连天途有线官网?
Python3.6正式版新特性预览
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
网站制作报价单模板图片,小松挖机官方网站报价?
微信小程序 HTTPS报错整理常见问题及解决方案
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel如何生成URL和重定向?(路由助手函数)
如何做网站制作流程,*游戏网站怎么搭建?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
*服务器网站为何频现安全漏洞?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
在线制作视频的网站有哪些,电脑如何制作视频短片?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
黑客如何利用漏洞与弱口令入侵网站服务器?
Android okhttputils现在进度显示实例代码
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
如何为不同团队 ID 动态生成多个“认领值班”按钮
Laravel如何使用Collections进行数据处理?(实用方法示例)
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel如何实现API资源集合?(Resource Collection教程)
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
如何在Windows服务器上快速搭建网站?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
SQL查询语句优化的实用方法总结
简单实现Android验证码
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何在阿里云购买域名并搭建网站?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Laravel怎么在Controller之外的地方验证数据
如何快速搭建自助建站会员专属系统?

