全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

ASP.NET MVC从控制器传递数据到视图的四种方式详解

前奏

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 


相关文章: 智能起名网站制作软件有哪些,制作logo的软件?  MySQL查询结果复制到新表的方法(更新、插入)  家庭建站与云服务器建站,如何选择更优?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  建站之星Pro快速搭建教程:模板选择与功能配置指南  建站之星后台密码遗忘或太弱?如何重置与强化?  简历在线制作网站免费版,如何创建个人简历?  建站主机与服务器功能差异如何区分?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何规划企业建站流程的关键步骤?  如何通过服务器快速搭建网站?完整步骤解析  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  建站之星CMS建站配置指南:模板选择与SEO优化技巧  专业网站建设制作报价,网页设计制作要考什么证?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  太平洋网站制作公司,网络用语太平洋是什么意思?  Swift开发中switch语句值绑定模式  建站168自助建站系统:快速模板定制与SEO优化指南  代刷网站制作软件,别人代刷火车票靠谱吗?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  定制建站流程解析:需求评估与SEO优化功能开发指南  ,制作一个手机app网站要多少钱?  如何快速搭建响应式可视化网站?  常州自助建站费用包含哪些项目?  山东网站制作公司有哪些,山东大源集团官网?  如何在腾讯云免费申请建站?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  Swift中switch语句区间和元组模式匹配  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  移民网站制作流程,怎么看加拿大移民官网?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何快速生成可下载的建站源码工具?  建站org新手必看:2024最新搭建流程与模板选择技巧  音响网站制作视频教程,隆霸音响官方网站?  如何通过多用户协作模板快速搭建高效企业网站?  如何在企业微信快速生成手机电脑官网?  济南企业网站制作公司,济南社保单位网上缴费步骤?  已有域名和空间如何快速搭建网站?  建站主机服务器选型指南与性能优化方案解析  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何在阿里云完成域名注册与建站?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  网站制作壁纸教程视频,电脑壁纸网站?  如何快速上传建站程序避免常见错误?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在IIS服务器上快速部署高效网站?  如何快速搭建高效WAP手机网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。