ASP.NET Core MVC中的局部视图用法

 更新时间:2022年04月14日 14:48:18   作者:Ruby_Lu  
这篇文章介绍了ASP.NET Core MVC局部视图的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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>

到此这篇关于ASP.NET Core MVC局部视图的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • ASP.NET MVC框架简介

    ASP.NET MVC框架简介

    这篇文章介绍了ASP.NET MVC框架,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • .Net行为型设计模式之策略模式(Stragety)

    .Net行为型设计模式之策略模式(Stragety)

    这篇文章介绍了.Net行为型设计模式之策略模式(Stragety),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Linux下使用Jenkins自动化构建.NET Core应用

    Linux下使用Jenkins自动化构建.NET Core应用

    这篇文章介绍了Linux下使用Jenkins自动化构建.NET Core应用的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • System.Diagnostics.Metrics .NET 6 全新指标API讲解

    System.Diagnostics.Metrics .NET 6 全新指标API讲解

    本文详细讲解了.NET 6全新指标System.Diagnostics.Metrics,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • ASP.NET Core中的Razor页面使用视图组件

    ASP.NET Core中的Razor页面使用视图组件

    这篇文章介绍了ASP.NET Core中的Razor页面使用视图组件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 部署ASP.NET Core程序到Linux系统

    部署ASP.NET Core程序到Linux系统

    这篇文章介绍了部署ASP.NET Core程序到Linux系统的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 几个C#常用正则表达式的总结

    几个C#常用正则表达式的总结

    几个C#常用正则表达式的总结...
    2006-08-08
  • ASP.NET Core MVC中的布局(Layout)

    ASP.NET Core MVC中的布局(Layout)

    这篇文章介绍了ASP.NET Core MVC中的布局(Layout),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#控件命名规范

    C#控件命名规范

    C#控件命名规范,遵守规范有利于代码的可维护性。
    2010-09-09
  • ASP.NET中HiddenField隐藏域控件的使用方法

    ASP.NET中HiddenField隐藏域控件的使用方法

    本文主要介绍ASP.NET中HiddenField控件的基础使用方法、事件以及配合javascript的一些使用,希望能帮到大家。
    2016-04-04

最新评论