前言

之前写过一篇 ASP.NET Core – View Component 里面有提到, View Component 是 Partial View 的加强版.

多了一个 .cs 可以写逻辑. 那如果我们不需要那么复杂就可以使用简化版的 Partial View 了.

重点

1. 一个 View .cshtml, 一个 View Model .cs

2. 用 Tag Helper 或者 IHtmlHelper 调用

3. view name 查找 view file 路径

Create View (.cshtml) and ViewModel (.cs)

files

微软的命名规范开始会有下划线, 但我没有 follow

内容

.cshtml 里面不可以用 @page 哦.

调用

Index.cshtml

@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
var viewModel = new HelloWorldPartialViewModel
{
Value = "Value"
};
} <partial name="HelloWorldPartial" model="@viewModel" />
<partial name="/Pages/HelloWorldPartial.cshtml" model="@viewModel" />
@await Html.PartialAsync("HelloWorldPartial", viewModel)
@await Html.PartialAsync("/Pages/HelloWorldPartial.cshtml", viewModel)

1. Tag Helper <partial> 调用, 使用 View Name

2. Tag Helper <partial> 调用, 使用 View Path

3. IHtmlHelper PartialAsync 调用, 使用 View Name

4. IHtmlHelper PartialAsync 调用, 使用 View Path

我推荐使用第 2 个方式.

View Name 查找 View File

上面 5 个是查找路线.

1. same folder

2. ancestor's folders (祖先 folder 都可以)

3. root /Shared 里面

4. root /Pages/Shared 里面

5. root Views/Shared 里面

我一向不鼓励依赖 ASP.NET Core 的这种潜规则查找的. 通常不符合正常的开发 folder structure.

以 View Component 的比较

我个人倾向于统一使用 View Component 就够了. 不要用 Partial View.

View Component 在调用上比 Partial View 直观, 可以通过 atrribute 拆分 parameters

Partial View 只能传一个 View Model 对象. 写起来很丑.

View Component 唯一的缺点就是一定要有一个 .cs 而且需要把 parameters mapping to View Model (很繁琐的代码), 这个扣分.

但我觉得无伤大雅, 毕竟是封装起来的. 重点是对消费者友好才加多分.

ASP.NET Core – Partial View的更多相关文章

  1. .net core partial view的一些心得

    原文:.net core partial view的一些心得 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog. ...

  2. asp.net core mvc View Component 应用

    ViewComponent 1.View 组件介绍 在ASP.NET CORE MVC中,View组件有点类似于partial views,但是他们更强大,View组件不能使用model bindin ...

  3. AspNet MVC4 教学-22:Asp.Net MVC4 Partial View 技术高速应用Demo

    A.创建Basic类型的MVC项目. B.Model文件夹下,创建文件: LoginModel.cs: using System; using System.Collections.Generic; ...

  4. [转] asp.net core Introducing View Components

    本文转自:http://www.c-sharpcorner.com/uploadfile/8c19e8/asp-net-5-getting-started-with-asp-net-mvc-6/ In ...

  5. ASP.NET Core 2 学习笔记(十)视图

    ASP.NET Core MVC中的Views是负责网页显示,将数据一并渲染至UI包含HTML.CSS等.并能痛过Razor语法在*.cshtml中写渲染画面的程序逻辑.本篇将介绍ASP.NET Co ...

  6. ASP.NET Core 中文文档 第四章 MVC(3.7 )局部视图(partial)

    原文:Partial Views 作者:Steve Smith 翻译:张海龙(jiechen).刘怡(AlexLEWIS) 校对:许登洋(Seay).何镇汐.魏美娟(初见) ASP.NET Core ...

  7. [ASP.NET MVC 小牛之路]12 - Section、Partial View 和 Child Action

    概括的讲,View中的内容可以分为静态和动态两部分.静态内容一般是html元素,而动态内容指的是在应用程序运行的时候动态创建的内容.给View添加动态内容的方式可归纳为下面几种: Inline cod ...

  8. 创建ASP.NET Core MVC应用程序(1)-添加Controller和View

    创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...

  9. ASP.NET Core开发-MVC 使用dotnet 命令创建Controller和View

    使用dotnet 命令在ASP.NET Core MVC 中创建Controller和View,之前讲解过使用yo 来创建Controller和View. 下面来了解dotnet 命令来创建Contr ...

  10. [转][ASP.NET MVC 小牛之路]12 - Section、Partial View 和 Child Action

    本文转自:http://www.cnblogs.com/willick/p/3410855.html 概括的讲,View中的内容可以分为静态和动态两部分.静态内容一般是html元素,而动态内容指的是在 ...

随机推荐

  1. CF1204A 题解

    洛谷链接&CF 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定一个二进制字符串 \(S\),求这个二进制数包含 \(4 ^ k\) 的个数. 特殊的:若 ...

  2. Codeforces Round 953 (Div. 2)

    Codeforces Round 953 (Div. 2) 闲来无事水题解. A . B . C 显然 \(k\) 是偶数.考虑 \(k\) 的上界,\(p_{1}=n,p_{n}=1\),产生 \( ...

  3. python实例化对象过程

    python实例化对象过程 Python中存在着一种静态的__new__()方法,通常在定义类时不会重写__new__()方法,于是Python在调用类时会自动寻找该类的继承对象(本例中为Object ...

  4. SSH Exporter:基于Prometheus的远程系统性能监控神器

    SSH Exporter English | 中文 介绍 SSH Exporter 是一个基于 Prometheus 规范的监控工具,通过 SSH 协议远程收集目标服务器的系统性能数据,如 CPU 使 ...

  5. 【Windows】Win10 20H2版本 管理员身份问题

    问题描述: 从之前的1909版本升级过来的,在一开始就是管理员身份,升级之后还是管理员身份没错 但是打开一些软件又会开始提示是否安全,还有C盘访问权限警告. 解决办法: 参考方案地址 http://w ...

  6. 【C】Re08 内存

    一.概述 程序运行之后,所有的数据加载到内存上 内存会被操作系统进行分区处理, 划分的区域主要分为4个: [1.代码文本区 text] 存放开发者编写的代码文本,二进制内容形式 [2.静态全局区 St ...

  7. 【转载】 在Ubuntu环境下,搜狗输入法乱码问题的解决

    原文作者:高坦的博客 | Tan's Blog 原文链接:https://www.cnblogs.com/gtscool/p/12234104.html本文采用 BY-NC-SA 许可协议.转载请注明 ...

  8. Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

    时隔两个月, Apache SeaTunnel 终于迎来大版本更新.此次发布的 2.3.3 版本在功能和性能上均有较大优化改进,其中大家期待已久的 CDC Schema evolution(DDL 变 ...

  9. 神经网络之卷积篇:详解Padding

    详解Padding 为了构建深度神经网络,需要学会使用的一个基本的卷积操作就是padding,让来看看它是如何工作的. 如果用一个3×3的过滤器卷积一个6×6的图像,最后会得到一个4×4的输出,也就是 ...

  10. 基于MonoGame重制《俄罗斯方块》游戏

    两年前,我使用C#基于MonoGame编写了一款<俄罗斯方块>游戏,相关介绍可以参考[这篇文章].最近,使用业余时间将之前的基于MonoGame的游戏开发框架重构了一下,于是,也就趁此机会 ...