2012-09-26 172 views
0

欲以航線ASP.NET MVC 3 我在這個URL,當我遇到一些麻煩:ASP.NET MVC路由錯誤

的mysite/InitialPage/123456 < - 合作伙伴ID

路由吧...

routes.MapRoute(
    "InitialPageRoute", 
    "InitialPage/{partnerID}", 
    new { controller = "InitialPage", action = "Index" } 
); 

OK,它工作正常。 當我把一個Html.ActionLink重定向到另一個網頁...

@Html.ActionLink("Another copy of some bill", "CopyOfBill", "Payment", new { partnerID = ViewBag.PartnerID }) 

和路由這樣...

routes.MapRoute(
    "CopyOfBillRoute", 
    "Payment/CopyOfBill/{partnerID}", 
    new { controller = "Payment", action = "CopyOfBill" } 
); 

並不起作用。 任何人有任何想法?

謝謝!

+0

你得到了什麼錯誤? –

+0

第二條路線是否位於更一般的路線之前? –

回答

0

在這種情況下最好使用RouteLink(明確命名路由),因爲控制器和操作都是硬編碼的。

@Html.RouteLink("Another copy of some bill", "CopyOfBillRoute", 
    new { partnerID = ViewBag.PartnerID }) 
+0

感謝您的解決方案,dbaseman,它比上面Shyju的解決方案更優雅! – Kiwanax

0

使用this超載

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName, 
    Object routeValues, 
    Object htmlAttributes 
) 

所以,你的代碼將

@Html.ActionLink("Another copy of some bill", "CopyOfBill", "Payment", 
            new { partnerID = ViewBag.PartnerID },null) 

假設你不希望指定錨標記任何HTML屬性。如果需要,請將最後一個參數(null)替換爲HTML屬性。

+1

謝謝,您的解決方案完美無缺,Shyju! – Kiwanax

0

首先你在Global.asax頂部寫你的路線。頂部,你做你的第一途徑

routes.MapRoute(
    "CopyOfBillRoute", 
    "Payment/CopyOfBill/{partnerID}", 
    new { controller = "Payment", action = "CopyOfBill" } 
); 

,並使用你的路線是這樣

@Html.RouteLink("click", "Regis",new {id=>id.Id}) 

我認爲這將有助於你