asp.net-mvc – ASP.NET MVC:通过所有ActionLinks传播查询参数的正确方法

在我的应用程序中,密钥查询字符串参数可用于授予对某些操作/视图的访问权限.
现在我希望所有ActionLinks和Forms自动包含此参数(如果存在于当前查询字符串中).

这样做的正确方法是什么?

我问的是正确的方法,因为我看到了几种建议以某种方式改变视图的解决方案(替代扩展方法/帮助器,手动参数传递).这不是我要找的解决方案.

更新:
最终解决方案(基于MikeSW的anwer):https://gist.github.com/1918893.

解决方法

你可以用路线做,但你需要更多的基础设施.像这样的东西
public class RouteWithKey:Route
{
  //stuff omitted
   public override VirtualPathData GetVirtualPath(RequestContext requestContext,RouteValueDictionary values)
   {
     values.Add("key",requestContext.HttpContext.Request.QueryString["key"]);   
    var t = base.GetVirtualPath(requestContext,values);        
        return t;
    } 
}

当然你需要从请求参数中检索密钥并处理密钥是查询中第二个参数的情况,但是这个apporach会自动添加通过普通as.net mvc帮助器构建的每个utel的密钥.

我碰巧为应用程序使用自定义路由,出于不同的目的,但我已经使用上面的代码测试并添加了参数,所以至少在我的项目中似乎工作正常.

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...