TagHelper的路由优势

posted at 2024.1.23 14:04 by Administrator

标记帮助程序(TagHelper)是Asp.net core 中的新增功能,它是服务器端组件,在服务器上运行,并在Razor文件中创建和渲染HTML元素。类似于HTML TagHelper,许多内置的TagHelper用于构建网页的常见任务,比如生成链接、创建表单和加载数据等。

为什么要使用TagHelper而不是手写相同的HTML代码?其中一个重要的优势是自适应路由。让我们通过一个例子来理解使用这种优势。

假设我们要查看某一道路湿度下的车辆屏显信息,则需要生成超链接,比如查看道路湿度humidity77%rh 时的详细信息。

              /home/roads/77 

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

A代码:<a href=”/home/roads/@humidity.Id”>查看</a> 

也可以使用Link链接的TagHelper,如下所示:

B代码:<a asp-controller=”home” asp-action=”roads” asp-route-id=”@humidity.Id”>查看</a>

TagHelperLink链接是根据应用程序的路由模板生成的链接,这意味着如果我们更改了路由模板,则生成的链接会针对路由模板所做的修改自动更改和适配,让生成的链接正常工作。而如果我们手动硬编码了URL,则当应用程序路由模板发生变化时,就必须在很多地方更改代码,这样效率不高。

比如原始的路由模板是:

App.UseEndpoints(endpoints =>
{
Endpoints.MapControllerRoute(
Name:”default”,
Pattern:”{controller=Home}/{action=Index}/{id?}”);
})

上述我们编写的AB代码都会生成正确的URL路径(/home/roads/77),正常运行。

现在让我们改变路由模板,请注意,在URL中有字符串china

App.UseEndpoints(endpoints =>
{
Endpoints.MapControllerRoute(
Name:”default”,
Pattern:”china/{controller=Home}/{action=Index}/{id?}”);
})

         再次运行,结果如下:

可以想象,如果其它的HTML元素没有采用TagHelper,在我们改变路由时,将不得不修改大量代码来实现相同的功能,这样,构建效率会大大降低。

Tags: , , , , ,

IT技术

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading