幸运蛋蛋pc开奖
这篇文章主要给大家介绍了关于ASP.NET Core MVC基础学习之局部视图(Partial Views)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core MVC具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

1.什么是局部视图

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

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

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

如果一个由几个逻辑部分组成的复杂页面,那么将每个逻辑部分作为局部视图是很有用。布局视图与普通视图之间没有语义差别,它们只是以不同的方式呈现。你可以直接从控制器的 ViewResult 返回视图,而这个视图?#37096;?#20197;当局部视图来用。视图和局部视图的主要区别是呈现方式不同,局部视图不运行 _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 ?#20540;?#30340;副本。对局部视图中的数据所做的更新不会影响到父视图。局部视图返回时,局部视图中更改的 ViewData 将丢失。

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

?#37096;?#20197;将模型传递到局部视图: @Html.Partial("PartialName",viewModel)

?#37096;?#20197;将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>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对爱安网的支持。

最新资讯
小电:Q3营收同比增长300% 业务覆盖1600城市

小电:Q3营收同比增长30

共享充电宝企业小电宣布,2019第三?#24452;?#23454;现营收同比增长
多哥总统请马云帮非洲培养企业家 一路聊到机场(图)

多哥总统请马云帮非洲

当地时间11月14日,马云受多哥总统福雷邀请到访多哥首都

送货超快的“双十一”

“双十一物流也太快了,我凌晨付的?#37096;睿?#26089;上就收到货了。
京东盘前大涨5.33%:2019Q3净利31亿元 同比增长160%

京东盘前大涨5.33%:201

京东(Nasdaq:JD)今日发布2019年第三?#24452;任?#32463;审计财报。财
前百度Apollo产品负责人任自如任智能家居事业部CTO

前百度Apollo产品负责

前百度Apollo(阿波罗)产品负责人David Zhou(周达文)于日前
最新文章
.NET生成水印更好的方法实例代码

.NET生成水印更好的方

这篇文章主要给大家介绍了关于.NET中生成水印更好的方
ASP.NET如何自定义项目模板详解

ASP.NET如何自定义项

这篇文章主要给大家介绍了关于ASP.NET如何自定义项目
.NET生成动态验证码的完整步骤

.NET生成动态验证码的

这篇文章主要给大家介绍了关于.NET生成动态验证码的完
ASP.NET Core MVC学习之视图组件(View Component)

ASP.NET Core MVC学习

这篇文章主要给大家介绍了关于ASP.NET Core MVC学习之
你应该知道的.NET错误与异常处理机制

你应该知道的.NET错误

这篇文章主要给大家介绍了关于.NET错误与异常处理机制
WCF中使用nettcp协议进行通讯的方法

WCF中使用nettcp协议

这篇文章主要给大家介绍了关于WCF中使用nettcp协议进
幸运蛋蛋pc开奖 南昌股票配资公司 上班炒股 股票涨跌的原理 台湾股票指数 股票指数期货走势 000028股票行情 股票融资费用的计算 上海股票配资哪家好 东方通信股票 股票涨跌怎么来的