.NET Core MVC基础之页面传值方式
  g6De1cLJtsdy 2023年11月26日 24 0

.NET Core MVC基础之页面传值方式📃

前言

最近工作太忙了,浅浅更新一下.NET基础知识。大部分面试官都会问.NET页面传值的几种方式,那么接下来就来细讲与实现一下吧!

页面传值分成两类

  • 第一类:控制器给视图传值
  • 第二类:视图给控制器传值

本篇文章主要讲控制器给视图传值

控制器->视图

弱类型数据

ViewData

ViewData是一个字典对象,可以在控制器中存储键值对,然后在视图中读取这些值。

ViewData 是通过 string 键访问的 ViewDataDictionary 对象

控制器:

public ActionResult Index()
{
    ViewData["Message"] = "Hello, World!";
    return View();
}

视图:

<div class="text-center">
    <h1 class="display-4">@ViewData["Message"]</h1>
</div>

效果图:

image

ViewBag

ViewBag是一个动态属性,可以在控制器中动态添加属性,并在视图中读取这些属性。

控制器:

public IActionResult Index()
{
    ViewBag.Message = "你好,加班的码农!";
    return View();
}

视图:

<div class="text-center">
    <h1 class="display-4">@ViewBag.Message</h1>
</div>

效果图:

image

TempData

用于在请求之间临时存储数据的一种机制。它类似于Session,但与Session不同的是,TempData的数据只在当前请求和下一个请求之间有效,之后就会被自动清除。

TempData 使用场景:

  • 在多个请求需要数据的情况下对重定向很有用。
  • 使用 cookie 或会话状态通过 TempData 提供程序进行实现。

控制器:

public ActionResult Index()
{
    return View();
}

public ActionResult NextPage()
{
     TempData["Message"] = "你有加班费吗,就加班?";
    return RedirectToAction("Index");
}

Index视图:

<div class="text-center">
    <h1 class="display-4">@TempData["Message"]</h1>
</div>

效果图:

直接访问Index视图

image

访问控制器中的NextPage方法进行重定向

image

强类型数据

Model

Model是将数据传递给视图的最常用方式。在控制器中创建一个模型对象,并将数据赋值给模型的属性。然后在视图中声明模型类型,并使用@Model来读取实体

控制器:

public class User
{
    public string UserName { get; set; }
}

public IActionResult Index()
{
    User u = new User();
    u.UserName = "加班人";
    return View(u);
}

视图:

@model User

<div class="text-center">
    <h1 class="display-4">@Model.UserName</h1>
</div>

也可以传递集合

public IActionResult Index()
{
    List<User> list = new List<User>()
    {
        new User() { UserName = "打工人1号" },
        new User() { UserName = "打工人2号" }
    };
    return View(list);
}
@model List<User>

<div class="text-center">
    @foreach (var m in Model)
    {
        <h1 class="display-4">@m.UserName</h1>
    }
</div>

效果图:

image

参考链接

ASP.NET Core MVC 中的视图 | Microsoft Learn

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月26日 0

暂无评论

推荐阅读
  NPQODODLqddb   2024年05月17日   63   0   0 .NET
  mVIyUuLhKsxa   2024年05月17日   50   0   0 .NET
  XkHDHG7Y62UM   2024年05月17日   42   0   0 .NET
  f18CFixvrKz8   2024年05月18日   78   0   0 .NET
  rBgzkhl6abbw   2024年05月18日   71   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   39   0   0 .NET
  S34pIcuyyIVd   2024年05月17日   55   0   0 .NET
  gKJ2xtp6I8Y7   2024年05月17日   49   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   32   0   0 .NET
g6De1cLJtsdy