所有路线的锚标记助手 - 一种更好的方法
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”放在首位。
【讨论】:
这就是我所需要的(我不想手动构建字典)。谢谢以上是关于所有路线的锚标记助手 - 一种更好的方法的主要内容,如果未能解决你的问题,请参考以下文章