ASP.NET Core MVC基础学习之局部视图(Partial Views)

作者:卡西莫多_Ruby 时间:2023-07-19 21:02:37 

1.什么是局部视图

局部视图是在其他视图中呈现的视图。通过执行局部视图生成的HTML输出呈现在调用视图中。与视图一样,局部视图使用 .cshtml 文件扩展名。当希望在不同视图之间共享网页的可重用部分时,就可以使用局部视图。

2.什么时候使用局部视图

局部视图是将大视图分成小组件的有效方法。通用的布局元素应在 _Layout.cshtml 中指定,非布局可重用内容可以封装成局部视图。

如果一个由几个逻辑部分组成的复杂页面,那么将每个逻辑部分作为局部视图是很有用。布局视图与普通视图之间没有语义差别,它们只是以不同的方式呈现。你可以直接从控制器的 ViewResult 返回视图,而这个视图也可以当局部视图来用。视图和局部视图的主要区别是呈现方式不同,局部视图不运行 _ViewStart.cshtml,而视图运行。

3.引用局部视图

在视图页面中有几种方法呈现局部视图。最简单的是使用 Html.Partial ,它通过 @ 前缀来调用并返回 IHtmlString : @Html.Partial("AuthorPartial")

PartialAsync 方法对包含异步代码的局部视图是可用的: @await Html.PartialAsync("AuthorPartial") 

还可以使用 RenderPartial 方法来呈现局部视图。这个方法不返回结果:它将渲染结果直接输出到响应中。正因为它不返回响应,所以必须在 Razor 代码块中调用。通用也有一个异步方法 RenderPartialAsync:


@{
Html.RenderPartial("AuthorPartial");
}

4.发现局部视图

当引用局部视图时,可以通过多种方式找到它的位置:


//以视图名使用当前文件夹下的视图,如果没有找到,则搜索Shared 文件夹
@Html.Partial("ViewName")

//这个名称的视图必须在相同文件夹下
@Html.Partial("ViewName.cshtml")

//依据应用根路径定位视图,以“/” 或 “~/” 开头的路径表示应用根路径
@Html.Partial("~/Views/Folder/ViewName.cshtml")

//使用相对路径
@Html.Partial("../Account/ViewName.cshtml")

局部视图可以链接。也就是说,一个局部视图可以调用另一个局部视图(只要不创建循环)。

5.局部视图访问数据

当局部视图被实例化时,它获取父视图的 ViewData 字典的副本。对局部视图中的数据所做的更新不会影响到父视图。局部视图返回时,局部视图中更改的 ViewData 将丢失。

你可以将 ViewDataDictionary 的实例传递到局部视图: @Html.Partial("PartialName",customViewData)

也可以将模型传递到局部视图: @Html.Partial("PartialName",viewModel)

也可以将ViewDataDictionary 和 模型都传递到视图: @Html.Partial("PartialName",viewModel,customViewData)

6.简单实战

先创建用到的模型:


namespace MVCTest.Models
{
public class Article
{

public Article()
 {
  Sections = new List<ArticleSection>();
 }
public string AuthorName { get; set; }
 public List<ArticleSection> Sections { get; set; }
}

public class ArticleSection
{
 public string Title { get; set; }
 public string Content { get; set; }
}
}

然后在控制器中实例化模型:


public class ArticleController : Controller
{
 // GET: Article
 public ActionResult Index()
 {
  var article = new Article();
  article.AuthorName = "test";
  article.Sections.Add(new ArticleSection() { Title="title",Content="content"});
  return View(article);
 }

}

父视图:


@model MVCTest.Models.Article

@{
ViewData["Title"] = "Index";
}

<h2>@Model.AuthorName</h2>
@Html.Partial("AuthorPartial",Model.AuthorName);

@foreach (var section in @Model.Sections)
{
@Html.Partial("ArticleSection", section);
}

AuthorPartial.cshtml:


@model string

<h3>@Model</h3>

ArticleSection.cshtml:


@model MVCTest.Models.ArticleSection

<h3>@Model.Title</h3>
<h2>@Model.Content</h2>

来源:https://www.cnblogs.com/afei-24/p/11293991.html

标签:core,mvc,局部视图
0
投稿

猜你喜欢

  • 浅析Python 中整型对象存储的位置

    2021-10-06 13:40:20
  • 一个简单的MySQL备份Shell脚本

    2024-01-22 16:44:24
  • python 3利用BeautifulSoup抓取div标签的方法示例

    2023-09-17 02:57:48
  • MySql 5.6.35 winx64 安装详细教程

    2024-01-24 13:36:13
  • Golang中互斥锁和读写互斥锁原理及示例代码

    2024-05-29 22:06:52
  • Python简单日志处理类分享

    2023-02-22 01:10:26
  • 如何用vue实现网页截图你知道吗

    2024-04-27 15:51:31
  • python中pandas.DataFrame对行与列求和及添加新行与列示例

    2023-03-16 22:44:01
  • Python使用paramiko连接远程服务器执行Shell命令的实现

    2023-01-19 15:25:39
  • Python3.x和Python2.x的区别介绍

    2022-01-05 12:36:27
  • 对pyqt5之menu和action的使用详解

    2022-03-12 23:00:37
  • Orcale权限、角色查看创建方法

    2024-01-20 04:22:02
  • 用Python解决x的n次方问题

    2022-02-02 06:30:10
  • 详解一种用django_cache实现分布式锁的方式

    2023-11-08 03:50:45
  • 破解加密的网页代码方法

    2010-03-16 12:35:00
  • QQ聊天窗口链接提示效果代码

    2008-12-16 12:59:00
  • T-SQL篇如何防止SQL注入的解决方法

    2024-01-23 16:51:06
  • python训练数据时打乱训练数据与标签的两种方法小结

    2021-11-17 11:15:12
  • Pandas读存JSON数据操作示例详解

    2022-05-24 08:14:03
  • golang import自定义包方式

    2024-04-25 15:08:55
  • asp之家 网络编程 m.aspxhome.com