【问题标题】:Asp.net Routing [duplicate]Asp.net 路由 [重复]
【发布时间】:2011-04-22 16:24:44
【问题描述】:

可能重复:
Ways to define an ASP.NET MVC Route

我正在尝试构建一个自定义路由,它将采用Test/page?id=XXX 下的任何内容 并触发我的路由处理程序。

我的问题是如何获取 id 值

这就是我的想法

RouteTable.Routes.Add("Test", new Route("Test/page?id=XXX}", new RouteHandler()));

【问题讨论】:

  • 你的意思是你有一个自定义的RouteHandler 类?

标签: c# asp.net-mvc


【解决方案1】:

假设测试是一个控制器,页面是一个动作

RouteTable.Routes.Add(new Route 
{
   Url = "[controller]/[action]/[id]"
   Defaults = new { action = "Index", id (string) null },
   RouteHandler = typeof(MvcRouteHandler)
});

但是路由非常依赖于上下文。您需要查看您的其他路线并确保此路线的排列顺序正确。

【讨论】:

  • 如果我想从传入的网址重定向,例如:www.some.com/test/page.aspx?id=44
  • 您希望将上述 URL 路由到哪里?调用哪个动作方法?
  • 我想触发一个自定义处理程序,它将执行基本的服务器重定向 RouteTable.Routes.Add("Test", new Route("Test/page.aspx?id=XXX}", new RouteHandler ()));
【解决方案2】:

此版本用于 global.asax,但请尝试:

routes.MapRoute(
    "Test",
    "Test/page?id={id}",
    new { controller = "Test", action = "Index" },
    new { id = @"\d+" }
);

为了更好的确定性,最后一个可选参数会将 id 限制为数字。

【讨论】:

    【解决方案3】:
    if (RouteData.Values.ContainsKey("customerId")) return RouteData.Values["customerId"].ToString();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多