如何添加类似example.com/id的MapRoute

时间:2013-01-03 13:56:22

标签: c# asp.net-mvc-3 asp.net-mvc-routing url-routing

我想创建一个URL缩短网站。我提供的网址类似于example.com/XXX XXX是短网址的值。

我希望网站位于example.com,网址为example.com/xxx。我想从URL获取xxx并将用户重定向到数据库中的等效URL。

如何实现这个?

2 个答案:

答案 0 :(得分:2)

在RouteConfig中创建一个新路由,例如:

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute("empty",
                            "{id}",
                            new {controller = "Home", action = "Index", id = UrlParameter.Optional}
                );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

        }
    }

只需使用索引

中传递的id转到数据库
  public ActionResult Index(int id)
  {
        //Do Stuff with db
        return View();
  }

asp.net mvc文档here

答案 1 :(得分:1)

您在默认控制器操作中执行所需重定向的一种方法。默认情况下,在asp.net mvc中它是home / index。

所以在索引操作中你应该有这样的代码

public ActionResult Index(string id)
{
      var url = Db.GetNeededUrl(id);
      return Redirect(url);
}

现在,如果用户输入这样的地址site.com/NewYear,您将被重定向到您数据库中的等效网址。