使用RouteMagic MVC保留查询字符串参数

时间:2012-02-15 04:00:51

标签: asp.net routing asp.net-mvc

有没有办法使用RouteMagic MVC重定向来保留查询字符串参数或所有参数?我需要旧网址: LegacyPage.aspx?q =值重定向到新建/新操作?q =值。下面的示例给出了一个奇怪的结果, 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 个答案:

答案 0 :(得分:0)

我还希望将查询字符串参数移动到目标网址。但我不能得到你的情况。我正在使用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。