IT评测·应用市场-qidao123.com

标题: ASP.NET Core MVC 从入门到精通之接化发(二) [打印本页]

作者: 科技颠覆者    时间: 2023-4-10 21:46
标题: ASP.NET Core MVC 从入门到精通之接化发(二)
随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前两篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启动运行,以及ASP.NET Core MVC的命名约定,创建控制器,视图,模型,接收参数等内容,今天继续讲解ASP.NET Core MVC 数据传递到客户端等相关内容,仅供学习分享使用。

 
概述

 
在ASP.NET Core MVC项目中,控制器传递数据到视图,常见的有以下几种方式:
 
ViewData

 
ViewData是控制器中一个ViewDataDictionary类型的属性,用来存储Key/Value的字典集合,在控制器中可以直接使用。
 
ViewData特征

 
ViewData具有以下特征:
 
ViewData示例

 
通过ViewData传值,首先在控制器中对ViewData赋值,如下所示:
  1. 1 /// <summary>
  2. 2 /// ViewData
  3. 3 /// </summary>
  4. 4 /// <returns></returns>
  5. 5 public IActionResult Test()
  6. 6 {
  7. 7     ViewData.Add("Name", "公子小六");
  8. 8     ViewData.Add("Age", 20);
  9. 9     return View();
  10. 10 }
复制代码
在视图中,对ViewData中的值进行获取,在Test.cshtml中格式为@ViewData[Key],如下所示:
  1. 1 <h1>欢迎公子小六</h1>
  2. 2
  3. 3     <span>姓名:</span>
  4. 4     <span>@ViewData["Name"]</span>
  5. 5
  6. 6
  7. 7     <span>年龄:</span>
  8. 8     <span>@ViewData["Age"]</span>
  9. 9
复制代码
运行测试,在浏览器中输入【https://localhost:7116/Hello/Test】,如下所示:

 
ViewBag

 
ViewBag是一个动态类型变量(dynamic),这是C# 4.0引入的新特性,变量类型会在运 行时进行解析。
 
ViewBag特征

 
ViewBag具有以下特征:
 
ViewBag示例

 
在ASP.NET Core MVC项目中,首先在控制器中对ViewBag进行赋值,如下所示:
  1. 1 public IActionResult Test2()
  2. 2 {
  3. 3     ViewBag.Name = "公子小六";
  4. 4     ViewBag.Age = 23;
  5. 5     return View();
  6. 6 }
复制代码
在视图中对ViewBag中的值进行获取,格式为:ViewBag.属性名 。如下所示:
  1. 1 @{
  2. 2     var name = ViewBag.Name;
  3. 3     var age = ViewBag.Age;
  4. 4     name = name + "A";
  5. 5     age = age + 1;
  6. 6 }
  7. 7 <h1>欢迎公子小六</h1>
  8. 8
  9. 9     <span>姓名:</span>
  10. 10     <span>@ViewBag.Name</span>
  11. 11
  12. 12
  13. 13     <span>年龄:</span>
  14. 14     <span>@ViewBag.Age</span>
  15. 15
  16. 16
  17. 17     <span>姓名:</span>
  18. 18     <span>@name</span>
  19. 19
  20. 20
  21. 21     <span>年龄:</span>
  22. 22     <span>@age</span>
  23. 23
复制代码
运行测试,在浏览器中,输入网址【https://localhost:7116/Hello/Test2】,如下所示:

 
模型数据

 
在ASP.NET Core MVC项目中,模型的主要作用就是在控制器和视图之间进行数据交互,用来传递数据也非常简单,如下所示:
 
创建模型

 
如果要用模型进行数据交互,首先是要创建模型,创建方法在前一篇文章中有介绍,不再赘述,示例模型类如下所示:
  1. 1 public class Student
  2. 2 {
  3. 3     /// <summary>
  4. 4     /// 唯一标识
  5. 5     /// </summary>
  6. 6     public int Id { get; set; }
  7. 7
  8. 8     /// <summary>
  9. 9     /// 学生名称
  10. 10     /// </summary>
  11. 11     public string Name { get; set; }
  12. 12
  13. 13     /// <summary>
  14. 14     /// 学生年龄
  15. 15     /// </summary>
  16. 16     public int Age { get; set; }
  17. 17
  18. 18     /// <summary>
  19. 19     /// 学生性别
  20. 20     /// </summary>
  21. 21     public string Sex { get; set; }
  22. 22 }
复制代码
 
控制器实例化模型

 
在控制器中对模型进行实例化,然后调用View(model)方法,如下所示:
  1. 1 public IActionResult Index()
  2. 2 {
  3. 3     var student = new Student()
  4. 4     {
  5. 5         Id = 1,
  6. 6         Name = "公子小六",
  7. 7         Age = 21,
  8. 8         Sex = "男"
  9. 9     };
  10. 10     
  11. 11     return View(student);
  12. 12 }
复制代码
 
视图指定模型

 
在视图中指定模型【@model 完整类名】,获取属性值【@Model.属性名】即可,如下所示:
  1. 1 @model  DemoCoreMVC.Models.Student
  2. 2 <h1>欢迎公子小六</h1>
  3. 3
  4. 4     <span>学号:</span>
  5. 5     <span>@Model.Id</span>
  6. 6
  7. 7
  8. 8     <span>姓名:</span>
  9. 9     <span>@Model.Name</span>
  10. 10
  11. 11
  12. 12     <span>年龄:</span>
  13. 13     <span>@Model.Age</span>
  14. 14
  15. 15
  16. 16     <span>性别:</span>
  17. 17     <span>@Model.Sex</span>
  18. 18
复制代码
 
运行测试

 
在浏览器中输入网址【https://localhost:7116/Hello/】页面如下所示:

 
TempData

 
首先ViewData和ViewBag都是一次性传递数据,如果跳转到其他页面,则无法进行获取,那么该如才能在页面跳转后,依然可以获取内容呢,答案就是TempData。
 
TempData特征

 
TempData相比于ViewData和ViewBag,具有以下特征:
 
TempData示例

 
首先有两个页面Test3,Test4,在Test3中,分别往ViewData和TempData中各自添加了一个Name名称的值。然后再让页面从Test3跳转到Test4。然后在Test4的页面中分别获取两个值。
  1. 1 public IActionResult Test3()
  2. 2 {
  3. 3     ViewData.Add("Name", "公子小六1");
  4. 4     TempData.Add("Name", "公子小六2");
  5. 5     return View();
  6. 6 }
  7. 7
  8. 8 public IActionResult Test4()
  9. 9 {
  10. 10
  11. 11     return View();
  12. 12 }
复制代码
视图页面内容也非常简单,如下所示:
Test3.cshtml页面内容如下:
  1. 1 <a target="_blank" href="https://www.cnblogs.com/~/Hello/Test4">跳转Test4</a>
复制代码
Test4.cshtml页面内容,如下所示:
  1. 1 <h1>欢迎公子小六</h1>
  2. 2
  3. 3
  4. 4     <span>姓名ViewData:</span>
  5. 5     <span>@ViewData["Name"]</span>
  6. 6
  7. 7
  8. 8     <span>姓名TempData:</span>
  9. 9     <span>@TempData["Name"]</span>
  10. 10
复制代码
运行程序,然后在浏览器中输入网址【https://localhost:7116/Hello/Test3】,如下所示:

由以上示例可以看出:
注意:TempData也只支持一次跨Action跳转,不支持多次跳转。
以上就是ASP.NET Core MVC从入门到精通之接化发 第二部分的全部内容,旨在抛转引玉,一起学习,共同进步。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4