为什么要使用 Taghelper (标记助手)

Author Image
admin Thursday, June 3, 2021 阅读数: 665
Share:

为什么要使用 Taghelper (标记助手)

本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP)
本文出自《从零开始学 ASP.NET Core 与 EntityFramework Core》目录
视频课程效果更佳:跨平台开发实战掌握 ASP.NET Core 与 EntityFramework Core

为什么要使用 Taghelper (标记助手)

在本章节中,我们将讨论为什么我们应该使用 Taghelper 而不是手写相同的 HTML 代码。 让我们通过一个例子来理解使用 Taghelper 的优势。 假设我们想要查看特定的学生详细信息。所以我们想要生成以下超链接。 学生 id 为 5 的详细信息。

/home/details/5

我们可以手动编写,如下所示:

<a href="/home/details/@student.Id">查看</a>

或者使用 A 标签的 Taghelper:

<a asp-controller="home" asp-action="details" asp-route-id="@student.Id"
  >查看</a
>

使用 Taghelper 的优势

Taghelper 是根据应用程序路由模板生成的链接。 这意味着如果我们稍后更改路由模板,Taghelper 生成的链接将自动反映,针对路由模板所做的更改,让生成的链接正常工作。

而如果我们手动硬编码了 URL,当应用程序路由模板发生变化时,我们必须在很多地方更改代码。一点都不效率。

通过一个例子理解这一点

app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});

以下代码不使用 Taghelper。我们通过对 URL 路径进行硬编码来完成的。

<a href="/home/details/@student.Id">查看</a>

以下代码是使用 <a>的 Taghelper 完成的.

<a asp-controller="home" asp-action="details"
    asp-route-id="@student.Id">查看</a>
    ```

请注意,我们没有针对 URL 路径来进行硬编码。我们只指定控制器操作方法的的名称以及路由参数及其值。在服务器上执行 Taghelper 时,它们会查看路由模板并自动生成正确的 URL。

上述两种方式都会生成正确的 URL 路径(/home/details/5),它适用于当前路由模板({controller=Home}/{action=Index}/{id?})

现在让我们改变路由模板,参考以下代码。 请注意,在 URL 中我们有字符串"pragim"

app.UseMvc(routes =>
{
    routes.MapRoute("default", "pragim/{controller=Home}/{action=Index}/{id?}");
});

使用 Taghelper 生成的代码是正确的链接:

<a href="/pragim/home/details/1">查看</a>

其中未使用 Taghelper 的代码则没有变化。 请注意,缺少 URL 路径"/pragim"。

<a href="/home/details/1">查看</a>

我们还有其他 Taghelper,可以生成表格。将此表单发回服务器时,将自动处理发布的值并显示相关的验证消息。如果没有这些 Taghelper,我们将不得不编写大量自定义代码来实现相同的功能。

如果此刻觉得没有多大意义,请不要担心。 我们会在后面的创建学生信息的时候,讨论表单的 taghelper。

文章说明

如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦
未得到授权不得擅自转载本文内容,52abp.com 保留版权

感谢您对我的支持

关注微信公众号:角落的白板报

公众号:角落的白板报