2010-10-03 141 views
0

我必須事先承認我對MVC很陌生,我一直在瀏覽www.asp.net/mvc的資源,但我想知道如果你夥計們可以幫助我一些事情。關於在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''Index'action of;

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 /此結果,剛一-test_0-9

我碰到下面的錯誤;

說明:HTTP 404資源 你正在尋找(或它的 一個依賴項)可能已被移除, 更名,或者是 暫時不可用。請 查看以下URL並確保 拼寫正確。

請求的URL: /55a3ef90c4b709 /此結果,剛一-test_0-9

我想知道是否有人可以看到我做錯了,並可能指向我的方向是正確的,也許指出一些代碼是錯誤的,如果它是一個簡單的問題,或者指向一篇文章,這將有助於我更好地理解,如果我使用這個路由的東西得到了錯誤的結尾。

感謝所有幫助提前

Satal:d

回答

3

我想這:

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

應該僅僅是這樣的:

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

MVC增加的控制器部分名稱本身 - 在第二個路由中,控制器也稱爲HomeController,但只有e將「Home」作爲控制器參數的默認值。

+0

完美謝謝你,我知道這很可能是一些簡單的我不能」由於缺乏經驗,請參閱:D – Satal 2010-10-03 22:56:14