为什么要使用 Taghelper (标记助手)
admin
2021-06-03为什么要使用 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 保留版权
感谢您对我的支持