gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 5 向每个 url 添加一个额外的查询字符串参数

转载 作者:行者123 更新时间:2023-12-05 04:14:52 25 4
gpt4 key购买 nike

我需要向我的 ASP.NET MVC 页面(包括索引页面)上呈现的所有 URL 添加一个额外的(但每个用户都是静态的)查询字符串参数。所以当用户点击任何 url 时,他们应该在他的浏览器地址栏中看到类似这样的内容:

domain.com?extra=code
domain.com/controller/action?extra=code
domain.com/controller/action?otherparams=something&extra=code

等...

因此页面上的每个 url 都应该包含这个额外的查询字符串参数。

我该怎么做?

最佳答案

没有内置的方法来实现这一点。我能想到的最可重用的方法是创建一个 UrlHelper 扩展,然后使用它呈现您网站上的所有 URL:

public static class UrlHelperExtensions
{
public static string MyAction(this UrlHelper urlHelper, string actionName)
{
return urlHelper.Action(actionName) + "?extra=code";
}
}

基本上将所有参数从您的方法版本代理到原始版本,同时将您的额外内容添加到生成的 URL 的末尾。但是,为了完整性,您需要为每个方法签名提供等效扩展(请参阅:https://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v=vs.118).aspx#M:System.Web.Mvc.UrlHelper.Action),以及 Url.RouteUrl 的所有签名,以防被使用.此外,如果您想利用像 Html.ActionLink 这样的 HTML 帮助程序,您还需要为 HtmlHelper 做同样的事情,为每个创建等效的扩展的签名以及 Html.RouteLink。根据您想要探索的深度,您可能还需要对 Html.BeginForm 之类的内容执行相同的操作。即使如此,该中心也只存在于所有接触应用程序的开发人员始终使用自定义扩展而不是每个链接的内置帮助器的情况下。

显而易见,这很重要。我会事后猜测任何需要这样做的商业案例。可以用另一种方式解决吗,一种更简单的方式?例如,如果您只需要在请求之间保留此代码,也许您应该将它添加到 session 中?那么,URL 的格式就不再重要了。

关于asp.net-mvc - ASP.NET MVC 5 向每个 url 添加一个额外的查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33999389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com