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 にあるルート値を取得し、別の/新しいルート値を渡すにはどうすればよいですか?

Global.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

次から取得できますRouteData

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

prodno-parameter のルートを設定する必要があると思います。このスレッドには解決策が含まれているようです:

ASP.NET MVC を使用した複数のパラメーターによるルーティング

于 2012-07-16T21:29:42.680 に答える