2

次のルートがあります。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(null,"Conference/{shortName}/Submission/{submission}/{action}", new { controller = "Conference", action = "Show" });
routes.MapRoute(null,"Conference/{shortName}/{action}",new { controller = "Conference", action = "Index" });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        );

すべて機能している次の(うまくいけば明らかな)リンク:

  • /会議/testconf
  • /会議/testconf/ShowSubmissions
  • /会議/testconf/提出/firstSub
  • /会議/testconf/提出/firstSub/EditSubmission

Submission/firstSub にいるとき、このような ActionLink を作成します

@Html.ActionLink("Show Submissions", "ShowSubmissions", "Conference", new { shortName = Model.confereceShortName },null)

次のリンクを作成します

  • /Conference/testconf/Submission/firstSub/ShowSubmissions

Actionlink に Submission/firstSub をハードコーディングせずに忘れさせるにはどうすればよいですか?

4

2 に答える 2

1

30 分の検索では不十分な場合もあります。2 時間検索する必要があります。

ASP.NET MVC 2 RC2 ルーティング - ActionLink を使用して上位レベルを参照するときに下位レベルの値をクリアする方法は?

制約内の値をルーティングまたは削除します。私にとっては、Routelink が仕事をしてくれます。

ありがとう

エルユスボフ&アレクセイ

于 2012-06-20T07:21:01.857 に答える
1

のプレースホルダーはどこにあります{controller}か?

デフォルト ルートは、次のサンプルのようになります。

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

また、最初のルートの /Submission/ 部分を削除してみてください。カスタム ルートの作成と注文に関する投稿へのリンク:

1)カスタム ルートの作成 (C#)

2) ASP .NET MVC のカスタム ルーティング

3) asp.net mvc の公式ソース

于 2012-06-19T11:21:33.713 に答える