• ASP.NET Core – Partial View


    前言

    之前写过一篇 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 (很繁琐的代码), 这个扣分.

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

  • 相关阅读:
    demo2.css
    less的嵌套
    ddd.css
    LESS自学
    vue.js过滤器 “|”
    v-if,v-else数据绑定
    v-for基本用法
    在spring中使用JdbcTemplate进行数据库管理操作
    2013第四届蓝桥杯JavaB组省赛 第一题:世纪末的星期
    PTA L1-049 天梯赛座位分配 (20分)
  • 原文地址:https://www.cnblogs.com/keatkeat/p/16389390.html
Copyright © 2020-2023  润新知