强制在 ASP.NET Core 中具有查询参数的所有 Url

Posted

技术标签:

【中文标题】强制在 ASP.NET Core 中具有查询参数的所有 Url【英文标题】:Force all Urls having a query parameter in ASP.NET Core 【发布时间】:2018-10-14 00:08:26 【问题描述】:

有没有办法强制使用 UrlHelper 构建的所有 Url 包含特定参数? 这个想法是一旦我设置了一个特定的参数以始终在链接上跟随它。

我使用以下代码生成大部分网址:Url.RouteUrl("MyRoute", new myparam = 1)

我想做的事: 我去https://example.com?myparam=1 我希望页面上生成的所有链接都包含myparam=1 参数。如果没有指定参数,则 url 不应包含它。

我正在考虑扩展UrlHelper,覆盖RouteUrl 方法(我只使用这个),扩展参数并将此类注册为服务,但由于参数作为匿名类传递,因此似乎很复杂。 ..

有没有更好的方法来达到这种行为?

【问题讨论】:

【参考方案1】:

您可以使用会话变量或 cookie 来执行此操作,然后根据需要使用。您的解决方案似乎在出现问题时风险更大。

【讨论】:

这是我想到的一个选项,但它主要用于调试/内部使用目的(在激活特定选项的情况下浏览网站),因此没有太大风险。 另一个选项是添加角色或声明以指示“调试器”或类似内容,然后可以按用户设置并打开/关闭? 明确一点:这个“调试”的目的是总结特定页面使用的所有资源。它可以登录也可以不登录(这就是为什么用户不好,但cookie可能是)。激活此标志时,所有资源均按布局显示在页面末尾。

以上是关于强制在 ASP.NET Core 中具有查询参数的所有 Url的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core MVC 中将自定义查询参数添加到操作 URL

Asp.net core MVC post 参数始终为空

具有多个路由参数的 ASP.NET Core Razor 页面层次结构

如何强制 Quartz 现在在 ASP.NET Core 中启动?

如何在 ASP.NET Core MVC 中使用 ADO.NET 向存储过程添加参数?

如何使用 ASP.NET Core 将查询字符串参数转换为看起来像目录部分?