html - 在 MVC 视图中使用 Sections 和 Articles 而不是表有什么好处?
问题描述
我正在查看一个 MVC 视图,如下所示:
<div class="orders">
<partial name="_Header" model="headerList"/>
<div class="container">
<article class="orders-titles row">
<section class="orders-title col-2">Order number</section>
<section class="orders-title col-4">Date</section>
<section class="orders-title col-2">Total</section>
<section class="orders-title col-2">Status</section>
<section class="orders-title col-2"></section>
</article>
@if (Model != null && Model.Any())
{
foreach (var item in Model)
{
<article class="orders-items row">
<section class="orders-item col-2">@Html.DisplayFor(modelItem => item.OrderNumber)</section>
<section class="orders-item col-4">@Html.DisplayFor(modelItem => item.Date)</section>
<section class="orders-item col-2">@Html.DisplayFor(modelItem => item.Total)</section>
<section class="orders-item col-2">@Html.DisplayFor(modelItem => item.Status)</section>
<section class="orders-item col-1">
<a class="orders-link" asp-controller="Order" asp-action="Detail" asp-route-orderId="@item.OrderNumber">Detail</a>
</section>
<section class="orders-item col-1">
@if (item.Status.ToLower() == "submitted")
{
<a class="orders-link" asp-controller="Order" asp-action="cancel" asp-route-orderId="@item.OrderNumber">Cancel</a>
}
</section>
</article>
}
}
</div>
</div>
我见过很多其他类似的例子。我通常会使用<thead>
and<tbody>
标签来使用表格。
因此,我相信我缺少一些基本的东西。我相信使用这两种方法都会有权衡。使用文章和部分而不是表格有什么好处和限制?
我花了几个小时在谷歌上搜索这个,我发现了很多解释什么是章节和文章的信息,例如这里:https ://www.w3schools.com/tags/tag_section.asp和这里:应该 <sections> 有 <articles> 还是应该<articles> 有 <sections> 吗?. 但是,我没有找到任何东西,这解释了我应该何时使用它们(在 MVC 视图上下文中)。
使用文章和部分而不是表格有什么好处?
更新
我从一个价格比较网站上拿了这个:
您是否希望上图中的数据在表格中结构化?即有六列。它似乎被构造为 div。
解决方案
您用来生成 HTML 的工具是无关紧要的(因此您使用 ASP.NET MVP 视图的事实是无关紧要的)。
HTML 是一种语义标记语言。视觉浏览器使用它来呈现人们可以用眼睛阅读的显示。屏幕阅读器使用它以听觉方式传达信息。它被搜索引擎用来帮助人们查找内容。它被其他数据处理工具用于各种目的。
语义用于描述内容是什么,工具将这些信息用于各种目的。
因此,应选择您使用的元素以最好地反映内容的语义,以便工具可以充分利用该数据。
在您的示例中,您的内容看起来不像是分成多个部分的一系列文章,因此 -对于问题中的内容- 使用这些元素是错误的,只会有缺点。
如果您有表格数据,请使用表格。
仅当您的内容包含文章和部分时才使用文章和部分元素。
推荐阅读
- python - 从多个 DataFrames Python 中收集重复的列名
- c# - c# 如何使用动态列名从另一个 List<> 创建列的 List<>
- google-chrome-extension - “散列”网络应用程序的正确方法是什么?
- r - 信息框错误(文本输出(“状态”)):找不到函数“信息框”
- java - Maven 在拥有主类的同时强制使用特定的 Java 版本
- c++ - 使用 std::cin.getline() 后如何保留 std::cin 的缓冲区
- python - “pygame.error:未设置视频模式”即使在 pygame.display.set_mode 已分配
- angular - 无法使用 websockets 传输类型与 SignalR 集线器连接
- javascript - javascript定时器改变颜色
- c# - 简单的 asp.net 标签助手列表<> 问题