关于ASP.NET MVC中自定义路由的问题

时间:2010-10-03 22:03:01

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

我必须提前承认我对MVC很新,我一直在浏览www.asp.net/mvc上的资源,但我想知道你们是否可以帮助我。

我被要求创建现有PHP网站的ASP.NET版本,该网站以特定格式存在大量现有链接,由于需要更改的工作量,我必须复制这些链接。所有现有的链接都太多了。

现有链接的格式为;

/([A-Za-z0-9]{14})/([A-Za-z0-9_-]*)

我尝试创建自定义路线似乎不起作用。我所做的是将Global.asax.cs文件中的RegisterRoutes方法更改为;

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

    routes.MapRoute(
        "ExistingLink",
        "{LinkId}/{Title}",
        new {controller="ExistingLinkController", action="Index"},
        new {LinkId = @"([A-Za-z0-9]{14})", Title = @"([A-Za-z0-9_-]*)"});

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

}

我还创建了'ExistingLinkController',其'索引'动作为;

public ActionResult Index(string LinkId, string Title)
{
    ViewData["LinkId"] = LinkId;
    ViewData["Title"] = Title;
    return View();
}

包含代码的视图;

<h2>LinkId: <%: ViewData["LinkId"] %>
</h2>Title: <%: ViewData["Title"] %></h2>

但是当我试着去的时候;

  

/ 55a3ef90c4b709 /这此结果只是-A-test_0-9

我收到以下错误;

  

描述:HTTP 404.资源   你正在寻找(或其中一个   依赖)可能已被删除,   它的名字改了,或者是   暂时不可用。请   查看以下网址并确保   拼写正确。

     

请求的网址:   / 55a3ef90c4b709 /这此结果只是-A-test_0-9

我想知道是否有人能够看到我做错了什么并且可能指出我正确的方向,或许指出一些代码是错误的,如果它是一个简单的问题或者指向一篇文章,这将帮助我得到一个如果我用这个路由的东西得到了错误的结局,那就更好地理解了。

感谢您提前提供任何帮助

Satal:D

2 个答案:

答案 0 :(得分:3)

我想这个:

 new {controller="ExistingLinkController", action="Index"},

应该就是这样:

 new {controller="ExistingLink", action="Index"},

MVC添加名称本身的Controller部分 - 在第二个路径中,控制器也称为HomeController,但您只需输入“Home”作为控制器参数的默认值。

答案 1 :(得分:2)

当我遇到我的路线时,我使用Phil Hack的路线调试器

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

它只是史诗