7

我正在尝试在 ASP.NET MVC 中编写一个类似于克隆的 TinyURL,作为第一个项目来习惯该框架。

URL 路由对我来说仍然有点混乱,尤其是当我偏离控制器/动作/id 时。

你们中的任何一个 ASP.NET MVC 忍者可以帮助我设置一个简单的 URL 路由,类似于 TinyURL.com 处理其路由的方式吗?

例如:

www.tinyurl.com/

重定向到索引页。因此,如果没有传递参数,则只需调用 Index() 视图。

但是,如果您传入您的 tinyurl 哈希,我需要调用 redirect() 操作。

www.tinyurl.com/fbc13

那么,我将如何设置此自定义路线?

 routes.MapRoute(  
                "Default",                              // Route name  
                "{tinyhash}",                           // URL with parameters  
                new { controller = "Link", action = "ReDirect", tinyhash = "" }  // Parameter defaults  
            );  

这不太正确,因为如果您只是访问 url 中没有散列的页面,当我想要它时,我会将其默认为 ReDirect() 操作,而是调用 Index() 方法。

有关如何模仿基本 TinyURL 等路由的建议?

4

1 回答 1

12

你在正确的轨道上。创建一个空路由,您将不会被重定向。

routes.MapRoute(  
    "Default",
    "",
    new { controller = "Home", action = "Index" }
);

并将您的默认设置更改为

routes.MapRoute(  
    "Redirect",
    "{tinyhash}", 
    new { controller = "Link", action = "ReDirect", tinyhash = "" } 
);

或者,您可以让控制器检查 tinyhash 值并在它为空时显示不同的视图。(那是hacky)

于 2009-04-07T20:23:48.587 回答