Asp.net mvc 如何在ASP.NET MVC 5中的后续请求中保留querystring参数?

Asp.net mvc 如何在ASP.NET MVC 5中的后续请求中保留querystring参数?,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,在我的ASP.NET MVC 5应用程序中,我想使用一些参数来“生存”几个后续请求,而不管它们是否在控制器中处理 例如,如果请求中包含order/add/1234?promocode=new2014,我希望它在用户整理订单的过程中一直保持不变,直到用户开始结账。这意味着,在我的视图中使用HTML助手生成的每个操作链接都应该包含此参数 如何实现这一点?您可以将此参数保存在Viewbag中,然后像下面一样再次使用它 @Action(“index”,new{promocode=Viewbag.Curr

在我的ASP.NET MVC 5应用程序中,我想使用一些参数来“生存”几个后续请求,而不管它们是否在控制器中处理

例如,如果请求中包含
order/add/1234?promocode=new2014
,我希望它在用户整理订单的过程中一直保持不变,直到用户开始结账。这意味着,在我的视图中使用HTML助手生成的每个操作链接都应该包含此参数


如何实现这一点?

您可以将此参数保存在Viewbag中,然后像下面一样再次使用它


@Action(“index”,new{promocode=Viewbag.CurrentPromocode})

在我看来,这将是会话的一个很好的用途。如果参数存在,请在会话中记下它。然后在签出完成后将其清除。最好的方法是编写自定义ActionLink帮助程序,在生成url时保留查询字符串值。@CharlieKilian您完全正确,但我想要一个无状态应用程序,不依赖可能过期的会话。@Darinditrov这是唯一的方法吗?我不能在默认帮助者自动考虑的ActionFilter中添加一个参数吗?@AlexanderGalkin,不,这不是唯一的方法。如前所述,您始终可以对会话使用有状态方法。但这是最好的办法。而且,如果您无法在视图中生成正确的Url,则ActionFilters无法提供帮助。这意味着我需要更改所有视图中的所有
@Url.Action()
调用。我想保留任何潜在的参数,而不是一个特定的参数。我想(现在也知道)你需要某种持久性存储。即使您要编写自己的ActionFilterAttribute并覆盖ActionHelper,您也需要暂时将其存储在某个地方。。会话或者工作流?不,你不需要任何持久性存储。这将使应用程序有状态,这是可伸缩性的最大敌人。他需要的是一个简单的自定义HTML助手,它将生成正确的url,同时考虑当前url中已经存在的查询字符串参数。此外,通过这种方法,您还可以获得强大的SEO功能,并有可能为您的URL添加书签。因此,他似乎只需要一些操作过滤器,将所需参数保存到Viewbag,然后html助手获取所有所需参数,并使用先前保存在Viewbag中的现有参数设置RouteValueDictionary,然后返回实际值ActionLink HtmlHelper及其传递给新助手的参数。我认为这与我的答案中的解决方案几乎相同,但更“自动”地完成