所有路线的锚标记助手 - 一种更好的方法

Posted

技术标签:

【中文标题】所有路线的锚标记助手 - 一种更好的方法【英文标题】:Anchor Tag Helper for All Routes - a better way 【发布时间】:2021-10-30 13:22:39 【问题描述】:

我的页面参数太多,无法使用 asp-route-param。但我似乎找不到一种简单的方法来保留任何现有参数,除了我想为该特定链接更改的参数(想想一个带有各种链接的页面,这些链接可以向下钻取/向上钻取过滤选项)。

我想出了一个可行的方法,但我想知道是否有更好的方法我找不到。

我的方法是获取完整的 URL:

var url = GetDisplayUrl()

然后是一个接受 url 和你想要改变的方法:

    public static string GenerateBetterUrl(string url, string queryParam, string paramValue)
    
        var uriBuilder = new UriBuilder(url);
        var query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query[queryParam] = paramValue;
        uriBuilder.Query = query.ToString();
        return uriBuilder.ToString();
    

我有一个不同的版本,它接受用于多重替换(例如日期)的字典。

我错过了什么吗?这似乎是一项正常的任务并且已经融入其中。或者是这样吗?

【问题讨论】:

【参考方案1】:

asp-all-route-data 属性支持创建键值对字典。 key为参数名,value为参数值。

您可以构建并提供整个字典,而不是一一提供路由参数。

此外,您还可以获得用于解析当前路由的所有值的字典。

@
var ambientValues = HttpContext.Features.Get<IRouteValuesFeature>()?.RouteValues;

<a asp-page="..." asp-all-route-data="ambientValues" asp-route-oneValue="something">Link</a>

只要确保将“asp-all-route-data”放在首位。

【讨论】:

这就是我所需要的(我不想手动构建字典)。谢谢

以上是关于所有路线的锚标记助手 - 一种更好的方法的主要内容,如果未能解决你的问题,请参考以下文章

设计路线助手在测试期间不再为人所知

使用弯道标记路线或路径的解决方案

如何使用百度地图查询出行路线

在 Google 地图 v3 中显示来自方向渲染标记的路线详细信息

沿路线添加标记

根据路线上的方向转动(旋转)标记位置