我想知道是否有办法创建ActionLink
或类似的,只更改实际查询的几个参数,并保持所有其他参数不变。例如,如果我使用http://example.com/Posts/Index?Page=5&OrderBy=Name&OrderDesc=True
之类的网址,我只想更改Page
或OrderBy
参数并保持所有其他参数相同,即使是那些我还不知道的参数(当我想添加Search
参数或类似的东西时)。
我当前操作的标题如下所示:
public ActionResult Index(int? Page, string OrderBy, bool? Desc)
我只对这个控制器“吃”的值感兴趣。但是,当我扩展此操作时(例如使用string Search
参数),我希望链接应该像以前一样工作。
这是我已经做过的事情:
RouteValueDictionary
并填充RouteData.Values
中的所有内容
Page
)都将丢失HttpContext.Request.QueryString
中的所有内容添加到上一个字典中
HttpContext.Request.Params
RouteValueDictionary
的{{1}} 所以问题:
ActionLink
包含传递给Controller并被其使用的所有数据?RVD
对象中的“垃圾”数据?编辑:检查Params
变量,但它通常是空的,并不包含我需要的所有内容。它似乎只包含某处路由所需的参数,但不包含所有参数。
答案 0 :(得分:-1)
查看RouteData.DataTokens
。
RouteData.DataTokens @ MSDN documentation:
获取传递给路由处理程序的自定义值的集合,但在ASP.NET路由确定路由是否与请求匹配时不使用。
HTHS,
查尔斯