0

问题是 id = 5 已经在 URL 中作为http://localhost:4032/Category/5. 但是要将该值传递给 ActionLink 似乎我必须这样做:

<td> @Html.ActionLink(p.ProdNo, "Main", "Home", new { id = 5, prodno = p.ProdNo }, null) </td>

这会产生正确的 URL:http://localhost:4032/Main/5/1097

但不得不这样做似乎不太正确。我知道必须有一些聪明的方法来处理这个问题。不幸的是,现在已经很晚了,我已经不聪明了。

我试过这个:

<td> @Html.ActionLink(p.ProdNo, "Main", "Home", new {prodno = p.ProdNo }, null) </td>

但最终以http://localhost:4032/Main?prodno=1097.

我尝试将参数添加到代码隐藏中的相应方法中,但这似乎也不起作用。

简而言之,当使用 ActionLink 时,如何获取 URL 中已有的路由值并传入另一个/新的路由值?

全球.asax

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

            routes.MapRoute(
                "Sections", // Route name
                "{controller}/{action}/{id}/{prodno}/{instid}/{section}", // URL with parameters
                new { controller = "TestEdit", action = "Index", id = UrlParameter.Optional, prodno = UrlParameter.Optional, instid = UrlParameter.Optional, section = UrlParameter.Optional } // Parameter defaults
            );

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

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

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

        }
4

2 回答 2

1

我认为您需要为您的 prodno 参数设置路线。看起来这个线程可能包含一个解决方案:

使用 ASP.NET MVC 进行多参数路由

于 2012-07-16T21:29:42.680 回答
1

您可以从以下位置获取它RouteData

@Html.ActionLink(
    p.ProdNo, 
    "Main", 
    "Home", 
    new { id = ViewContext.RouteData["id"], prodno = p.ProdNo }, 
    null
)
于 2012-07-17T06:20:04.497 回答