使用 RouteMagic MVC 保留查询字符串参数
Posted
技术标签:
【中文标题】使用 RouteMagic MVC 保留查询字符串参数【英文标题】:Preserving query-string parameters with RouteMagic MVC 【发布时间】:2012-03-06 11:00:22 【问题描述】:有没有办法通过使用 RouteMagic MVC 进行重定向来保留查询字符串参数或所有参数?我需要旧网址:LegacyPage.aspx?q=value 重定向到 New/NewAction?q=value。下面的示例给出了一个奇怪的结果,New/NewAction?q=q,而不是查询字符串的实际值。我尝试了各种排列都没有运气。任何帮助将不胜感激。
var newRoute = routes.MapRoute(
"New",
"New",
new controller = "New", action = "NewAction"
);
routes.Redirect(r => r.MapRoute("Legacy", "LegacyPage.aspx"), true)
.To(newRoute);
【问题讨论】:
【参考方案1】:我还希望将查询字符串参数移动到目标 url。但我连你的情况都弄不明白。我正在使用 1.2 版本的 routeMagic。我查看了源代码:
public IHttpHandler GetHttpHandler(RequestContext requestContext)
var requestRouteValues = requestContext.RouteData.Values;
var routeValues = AdditionalRouteValues.Merge(requestRouteValues);
var vpd = TargetRoute.GetVirtualPath(requestContext, routeValues);
string targetUrl = null;
if (vpd != null)
targetUrl = "~/" + vpd.VirtualPath;
return new RedirectHttpHandler(targetUrl, Permanent, isReusable: false);
return new DelegateHttpHandler(
httpContext => httpContext.Response.StatusCode = 404, false);
而且好像没有在 targeUrl 中添加查询字符串参数。
【讨论】:
以上是关于使用 RouteMagic MVC 保留查询字符串参数的主要内容,如果未能解决你的问题,请参考以下文章