0

我在尝试在 ASP.NET MVC 3 中使用路由时遇到了一些麻烦。我在这个 URL 中:

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

路由它...

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

好的,它工作正常。当我把 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" }
);

并且不起作用。有人知道吗?

谢谢!!!

4

3 回答 3

0

在这种情况下最好使用 a RouteLink(明确命名路由),因为控制器和操作都是硬编码的。

@Html.RouteLink("Another copy of some bill", "CopyOfBillRoute", 
    new { partnerID = ViewBag.PartnerID })
于 2012-09-26T17:46:34.153 回答
0

使用这个重载

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 属性。

于 2012-09-26T17:50:35.447 回答
0

首先,您在顶部的 Global.asax 中写下您的路线。最重要的是你做了你的第一条路线

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

并像这样使用您的路线

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

我想这会对你有所帮助

于 2012-09-26T18:13:07.800 回答